Auge
Die erste Version habe ich noch mit der IDE von Adobe gemacht, die ist ganz unten in der Flashseite das ding mit dem Schädel.
Als ich angefangen habe, mit haXe zu programmieren, war dieses Auge das erste, was ich ausprobiert habe. Allerdings hab ich die erste Version mit AS2 programmiert.
Diese Version hier ist mit ActionScript 3 gemacht, objektorientiert und die, die ich im Flash-Header benutzt habe.
/*
-main Auge_as3
-swf auge_as3.swf
-swf-version 9
-swf-header 400:400:15
*/
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
class Auge_as3 {
static var mc : MovieClip;
static var auge : Auge;
public static function main() {
mc = flash.Lib.current;
mc.addEventListener(Event.ENTER_FRAME, einzelbild );
auge = new Auge( mc, 200, 200, 30, 300 );
} // main()
static function einzelbild(e:Event) {
auge.bewegen(mc.mouseX, mc.mouseY); // guckt zur Maus
} // einzelbild()
} // Auge_as3
class Auge {
private var mc : MovieClip; // auf den das Auge gezeichnet wird
private var auge : Sprite;
private var pupille : Sprite;
private var r:Int; // radius Augapfel
private var h:Int; // hoehe, in der der Mauszeiger ueber der Hintergrundebene schwebt
private var zentrumX : Int; // zentrum des Augapfels
private var zentrumY : Int;
public function new(mc:MovieClip, posX:Int, posY:Int, radius:Int, hoehe:Int){
this.mc = mc;
this.r = radius;
this.h = hoehe;
this.zentrumX = posX;
this.zentrumY = posY;
this.auge = new Sprite();
auge.graphics.beginFill(0x234090,0.15);
auge.graphics.drawCircle(0, 0, Math.sqrt((r*r)+((r/3)*(r/3)))); // Augapfel malen
auge.graphics.endFill();
mc.addChild(auge);
auge.x = zentrumX;
auge.y = zentrumY;
this.pupille = new Sprite();
pupille.graphics.beginFill(0x234090,0.5);
pupille.graphics.drawCircle(0,0,r/3); // Iris malen
pupille.graphics.beginFill(0x234090,0.75);
pupille.graphics.drawCircle(0, 0, r/4.5); // Pupille malen
pupille.graphics.endFill();
auge.addChild(pupille);
} // augeMalen()
public function bewegen(x:Float,y:Float) {
var xm: Float = x-zentrumX;
var ym: Float = y-zentrumY;
var abstand : Float = Math.sqrt((xm*xm)+(ym*ym));
if (ym >= 0) { // Umrechnung von kartesischen Koordinaten in Polarkoordinaten
auge.rotation = Math.acos(xm/abstand) *57.29578; // 180/PI
} else {
auge.rotation = -Math.acos(xm/abstand) *57.29578;
}
var phi:Float = Math.atan(h/abstand); // Winkel zwischen Blickrichtung und Hintergrund
pupille.scaleX = Math.sin(phi); // wie stark die Pupille gestaucht wird
pupille.x = Math.cos(phi) *r; // Auslenkung der Pupille von "geradeaus gucken"
} // augeBewegen()
} // class Auge