2008年12月27日土曜日

ENTER FRAME イベント その1

ActionScriptにはフレーム(Frame)という概念がある。フレームとはパラパラ漫画での1枚の絵に相当する。FrameRateというパラメータで、1秒間に何フレーム再生するかを指定できる。設定可能な範囲は、0.01から1000だそうだ。但し、この値は、正確に実施されるものではなく、プログラムが実行されている環境に左右される。

この1フレームが再生される度に、ENTER_FRAMEというイベントが発生する。FrameRateが24ならば、1秒間に最大24回発生すると期待できる。フレームごとに何か処理したいとき、このイベントのイベントリスナーを実装すればよい。コードによって何かアニメーションをさせたいときに、多用されるイベントの1つだ。

次は、Shapeオブジェクトで作成された矩形を右へ動かすだけの単純なサンプルである。右端に到着したら、左端に戻るようになっている。



package {
  import flash.display.Shape;
  import flash.display.Sprite;
  import flash.events.Event;

  [SWF(width="240",height="180",frameRate="24",backgroundColor="0x336699")]
  public class EnterFrame extends Sprite {
    private var _shape:Shape;
    public function EnterFrame() {
      _shape = new Shape();
      _shape.graphics.beginFill(0x339900);
      _shape.graphics.drawRoundRect(0,0,10,10,5);
      _shape.graphics.endFill();
      _shape.y = 100;
      addChild(_shape);

      addEventListener(Event.ENTER_FRAME, enterFrameHandler);
    }

    private function enterFrameHandler(event:Event):void {
      _shape.x += 5;
      if (_shape.x > 240) {
        _shape.x = 0;
      }
    }
  }
}


次回は、このENTER_FRAMEをもう少し、一般化してみたい。

0 件のコメント: