すべてのコンポーネントが、ユーザーとやり取りしたときに、イベントをブロードキャストします。 例えば、ユーザーが Button をクリックすると、Button は
MouseEvent.CLICK
イベントを送り出し、ユーザーがリスト内の項目を選択すると、List は Event.
CHANGE
イベントを送り出します。コンポーネントにとって重要な事態が発生したときもイベントが発生する場合があります。例えば、UILoader インスタンスでコンテンツのロードが完了すると、
Event.COMPLETE
イベントが生成されます。イベントを処理するには、イベントが発生したときに実行する ActionScript コードを作成します。
コンポーネントのイベントには、コンポーネントが継承しているすべてのクラスのイベントが含まれます。つまり、すべての ActionScript 3.0 ユーザーインターフェイスコンポーネントが、UIComponent クラスからイベントを継承します。これは、UIComponent クラスが ActionScript 3.0 ユーザーインターフェイスコンポーネントの基本クラスであるためです。 コンポーネントがブロードキャストするイベントのリストについては、「
Adobe Flash Professional CS5 用
ActionScript 3.0 リファレンスガイド
」のコンポーネントのクラスエントリにある「イベント」の節を参照してください。
ActionScript 3.0 におけるイベント処理について詳しくは、『ActionScript 3.0 のプログラミング』を参照してください。
イベントリスナについて
ActionScript 3.0 コンポーネントのイベント処理では次のような点が重要です。
-
すべてのイベントは、コンポーネントクラスのインスタンスによってブロードキャストされます。 ブロードキャストを実行したコンポーネントインスタンスがブロードキャスターです。
-
コンポーネントインスタンスの
addEventListener()
メソッドを呼び出すことによって、イベントリスナを登録します。例えば、次のコード行は、
MouseEvent.CLICK
イベントのリスナを Button インスタンス
aButton
に追加します。
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
addEventListener()
メソッドの 2 番目のパラメーターは、イベントが発生したときに呼び出される関数の名前
clickHandler
を登録します。この関数は、コールバック関数とも呼ばれます。
-
1 つのコンポーネントインスタンスに複数のリスナを登録できます。
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
aButton.addEventListener(MouseEvent.CLICK, clickHandler2);
-
また、1 つのリスナを複数のコンポーネントインスタンスに登録することもできます。
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
bButton.addEventListener(MouseEvent.CLICK, clickHandler1);
-
イベントハンドラー関数は、イベントタイプと、イベントをブロードキャストするインスタンスに関する情報を含むイベントオブジェクトに渡されます。 詳しくは、
イベントオブジェクトについて
を参照してください。
-
リスナは、アプリケーションが終了するか、ユーザーが
removeEventListener()
メソッドを使用して明示的に削除するまではアクティブな状態を維持します。例えば、次のコード行は、
aButton
の
MouseEvent.CLICK
イベントのリスナを削除します。
aButton.removeEventListener(MouseEvent.CLICK, clickHandler);
イベントオブジェクトについて
イベントオブジェクトは、Event オブジェクトクラスから継承され、発生したイベントに関する情報を含むプロパティを持ちます。例えば、イベントに関する重要な情報を提供する
target
プロパティや
type
プロパティなどがあります。
プロパティ
|
説明
|
type
|
イベントのタイプを示すストリングです。
|
target
|
イベントをブロードキャストしたコンポーネントインスタンスへの参照です。
|
イベントにその他のプロパティがある場合は、「
Adobe Flash Professional CS5 用
ActionScript 3.0 リファレンスガイド
」のイベントのクラスの説明内にそのプロパティの一覧が記載されています。
イベントオブジェクトは、イベントが発生したときに自動的に生成され、イベントハンドラー関数に渡されます。
関数内でイベントオブジェクトを使用すると、ブロードキャストされたイベントの名前や、イベントをブロードキャストするコンポーネントのインスタンス名にアクセスできます。 インスタンス名から、他のコンポーネントプロパティにアクセスすることもできます。 例えば、次のコードは
evtObj
イベントオブジェクトの
target
プロパティを使用して
aButton
の
label
プロパティにアクセスし、出力パネルに表示します。
import fl.controls.Button;
import flash.events.MouseEvent;
var aButton:Button = new Button();
aButton.label = "Submit";
addChild(aButton);
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(evtObj:MouseEvent){
trace("The " + evtObj.target.label + " button was clicked");
}
|
|
|