インスピリットで働くゆるーいプログラマが拾った情報をてきとーに放り込んでおくサイト。
4 月 5 2010

カスタムイベント

自分でイベントを発行して、addEventListener で登録した関数で受けたいって時の仕掛けについて。

以下は、1秒後に完了するタイマー。
完了すると、イベントを発行する。


package {
  import flash.events.*;
  import flash.display.*; 

  public class EvClass extendsEventDispatcher {

    public static const COMPLETE:String = "EvComplete"; // 適当に設定

    // コンストラクタ
    function EvClass() {
      var timer:Timer = new Timer(100,10); // 0.1秒を10回繰り返し
      timer.addEventListener( TimerEvent.TIMER,  // タイマーの周期処理
        function(){ // 適当な処理 }
      );
      timer.addEventListener( TimerEvent.TIMER_COMPLETE,  // タイマー完了時処理
        function(){
          dispatchEvent(new Event(COMPLETE)); // イベント発行
        }
      );
      timer.start(); // タイマー開始
    }
  }
}

EvClass を受ける側のソース。
イベントが発行されたら、onComplete 関数で受ける。


var evsample:EvClass = new EvClass();
evsample.addEventListener(EvClass.COMPLETE, onComplete);

function onComplete(e:Event):void{
  trace("Complete");
}