package {
import com.toritoriworks.helpers.FrameHelper;
import com.toritoriworks.helpers.IHelper;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
[SWF(width="240",height="180",frameRate="24",backgroundColor="0x336699")]
public class EnterFrame3 extends Sprite {
private var _sprite:Sprite;
private var _helper:IHelper ;
public function EnterFrame3() {
_sprite = new Sprite();
_sprite.graphics.beginFill(0x339900);
_sprite.graphics.drawRoundRect(0,0,50,50,5);
_sprite.graphics.endFill();
_sprite.y = 100;
addChild(_sprite);
_helper = FrameHelper.setup(_sprite,null,mainLoop,null);
_sprite.addEventListener(MouseEvent.CLICK, pauseHandler);
}
private function pauseHandler(event:Event):void {
_sprite.removeEventListener(MouseEvent.CLICK, pauseHandler);
_helper.pause();
_sprite.addEventListener(MouseEvent.CLICK, resumeHandler);
}
private function resumeHandler(event:Event):void {
_sprite.removeEventListener(MouseEvent.CLICK, resumeHandler);
_helper.resume();
_sprite.addEventListener(MouseEvent.CLICK, pauseHandler);
}
private function mainLoop():Boolean {
_sprite.x += 5;
if (_sprite.x> 240) {
_sprite.x = 0;
}
return true;
}
}
}
実行結果は、次のとおりである。矩形をクリックすると、それが止まったり右へ動いたりを交互に繰り返す。
ここでは、pause()、resume()の例を示したが、他にrevert()、skip()、cancel()がある。pause(),resume(),revert(),skip()の動作については、「ENTER FRAME イベント その2」のチャートを見てもらいたい。cancel()については、複雑になるので、あえてチャート上に表示しなかった。
cancel()メソッドは、その場で、FrameHelperの処理をすべて中断し、setupメソッドで与えられた関数を実行することなく、処理を終了する。
0 件のコメント:
コメントを投稿