ActionScriptのイベントについてのメモ

参考:O'Reilly Japan - 詳説 ActionScript 3.0

用語

  • そもそも、「イベント」とは
    • 「プログラムの中で反応を引き起こす潜在的な力を持った、実行時の注目すべき出来事」のこと
  • ActionScriptのイベントは、次の2つのカテゴリに分けることができる
    • ビルトインイベント
      • 実行環境の状態の変化を表すイベント
        • 「マウスのクリック」や「ファイルの読み込み操作の完了」など
    • カスタムイベント
      • プログラムの状態の変化を表すイベント
        • 「ゲームの終了」や「クイズの答えの送信」など
  • イベントリスナー
    • 任意のイベントが発生するまで待ち(聞き耳を立て)、
    • イベント発生時にそのイベントを処理する(イベントに反応する)メソッドのこと

ActionScriptのイベント処理の流れ

  1. イベントが発生する
  2. ActionScriptはそのイベントを登録したすべてのイベントリスナーを実行する
    • これを「イベントの送出(ディスパッチ)」と呼ぶ
    • 1つのイベントに複数のイベントリスナーを対応付けることができる。
  3. ASはそのイベントを表す「イベントオブジェクト」と呼ばれるオブジェクトを作成する
    • イベントオブジェクトは常にEventクラスに「属する」インスタンスである
  4. イベントの送出中に実行されるすべてのイベントリスナーは、イベントオブジェクトへの参照を引数として渡される。
    • private function mouseListener(e:MouseEvent):void {..}
      • イベントリスナーの mouseListener は、イベントオブジェクトである MouseEvent を使って、イベント発生時のマウスポインタの位置を知ることができる。

ActionScriptのイベント処理の書き方

01| package {
02|   public class Hoge {
03|     public function Hoge () {
04|       // イベントターゲット(イベントが発生するオブジェクト)の用意
05|       var eventTarget:EventTarget = new EventTarget();
06| 
07|       // イベントリスナーの登録
08|       eventTarget.addEventListener(Event.COMPLETE, eventListener);
09| 
10|       // イベントを引き起こす操作
11|       eventTarget.foo(); // Event.COMPLETEイベントが発生するような処理
12|     }
13| 
14|     // イベントリスナーの定義
15|     private function eventListener(e:Event):void {
16|       trace("イベントを処理");
17|     }
17|   }
19| }
  • 8行目:イベントリスナーの登録
    • eventTarget.addEventListener(Event.COMPLETE, eventListener);
      • eventTarget において、Event.COMPLETE イベントが発生したときに、Hoge クラスのリスナー eventListener() が実行されるようにしている。