Spriteクラスを継承して新しいクラスを作る際に毎回必ずインポートするものとか、メソッドとかあると思うけどそんなのをいちいちクラス作る度にやってたら日が暮れちゃうよって事でそういうのを全部持たせた自分用のSpriteクラスを作っとこうって話。
import flash.display.Sprite; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; /*以下はtweesyインポート http://code.google.com/p/tweensy/*/ import com.flashdynamix.motion.*; import fl.motion.easing.*;
package { import flash.display.Sprite; import flash.events.Event; import com.flashdynamix.motion.*; import fl.motion.easing.*; public class AbstractSprite extends Sprite { /*tweengyを簡単に呼び出す為にメンバに登録*/ public var tg:TweensyGroup=new TweensyGroup(); protected var ttl:TweensyTimeline; protected var qtEI:Function=Quartic.easeIn;//筆者はQuarticが好きみたいだ protected var qtEO:Function=Quartic.easeOut; protected var qtEIO:Function=Quartic.easeInOut; /*コンストラクタ*/ public function AbstractSprite() { addEventListener(Event.ADDED_TO_STAGE,_initialize);//ステージに追加された時 addEventListener(Event.REMOVED_FROM_STAGE,_uninitialize);//ステージから削除された時 } private function _initialize(e:Event):void { initialize(); } private function _uninitialize(e:Event):void { uninitialize(); } //継承したクラスは以下をオーバーライドする protected function initialize():void {} protected function uninitialize():void {} } }
package { public class TestSprite extends AbstractSprite { public function TestSprite() { super();//明示的にsuperクラスのコンストラクタ呼び出し } protected override function initialize():void { alpha=0; tg.to(this,{alpha:1},1,qtEO); trace("ステージに追加されましたよー"); } protected override function uninitialize():void { trace("ステージから削除されちゃいましたー"); } } }
import flash.utils.Timer; import flash.events.TimerEvent;
protected function delay(f:Function,time:Number,target:Sprite=null):void { if (target==null) { target=this; } var timer:Timer=new Timer(time*1000,1); timer.addEventListener(TimerEvent.TIMER,timerEventHandler); function timerEventHandler(e:TimerEvent):void { timer.removeEventListener(TimerEvent.TIMER,timerEventHandler); f.call(target); } timer.start(); }
package { import flash.display.Sprite; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; import com.flashdynamix.motion.*; import fl.motion.easing.*; public class AbstractSprite extends Sprite { protected var tweenGroup:TweensyGroup=new TweensyGroup(); protected var tweenAction1:TweensyTimeline; protected var tweenAction2:TweensyTimeline; protected var qtEI:Function=Quartic.easeIn; protected var qtEO:Function=Quartic.easeOut; protected var qtEIO:Function=Quartic.easeInOut; public function AbstractSprite() { addEventListener(Event.ADDED_TO_STAGE,_initialize); addEventListener(Event.REMOVED_FROM_STAGE,_uninitialize); } private function _initialize(e:Event):void { initialize(); } private function _uninitialize(e:Event):void { uninitialize(); } protected function initialize():void { } protected function uninitialize():void { } protected function delay(f:Function,time:Number,target:Sprite=null):void { if (target==null) { target=this; } var timer:Timer=new Timer(time*1000,1); timer.addEventListener(TimerEvent.TIMER,timerEventHandler); function timerEventHandler(e:TimerEvent):void { timer.removeEventListener(TimerEvent.TIMER,timerEventHandler); f.call(target); } timer.start(); } } }
//第二引数に1を入れたとしたら1秒後に実行する delay(実行したい関数名:Function,何秒後に実行するか:Number); //こんな書き方もある delay(function():void{ //3.5秒後にやりたい事を記述する trace("3.5秒が経ちました。"); },3.5)
