+

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