イベント処理

すべてのコンポーネントが、ユーザーとやり取りしたときに、イベントをブロードキャストします。 例えば、ユーザーが 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"); 
}