イベント処理の基本Flash Player 9 以降、Adobe AIR 1.0 以降 イベントとは、SWF ファイル内でのプログラマーとして関心のある様々な事象の発生と考えることができます。 例えば、大部分の SWF ファイルは、マウスクリックに応答する単純なものから、フォームに入力されたデータの受け入れまたは処理のような複雑なものまで、何らかのユーザーの操作をサポートします。ユーザーと SWF ファイルとの間で行われるそのような対話操作は、イベントの一種と考えられます。 また、ユーザーによる直接的な操作が行われていないときも、サーバーからのデータのロードが終了した場合や、接続されたカメラがアクティブになった場合などにイベントが発生することがあります。 ActionScript 3.0 では、1 回のイベントを 1 個のイベントオブジェクト(Event クラスまたはそのサブクラスのインスタンス)として表現します。 イベントオブジェクトには、特定のイベントに関する情報が格納されているのに加え、イベントオブジェクトを操作する際に役立つメソッドが備わっています。例えば Flash Player または AIR では、マウスクリックを検出すると、その特定のマウスクリックイベントを表すイベントオブジェクト(MouseEvent クラスのインスタンス)を作成します。 次に、Flash Player または AIR は作成したイベントオブジェクトを送出します。これは、イベントのターゲットとなるオブジェクトにイベントオブジェクトを引き渡すという意味です。イベントオブジェクトの送出先となるオブジェクトを、イベントターゲットと呼びます。例えば、コンピューターに取り付けられているカメラがアクティブになった場合、Flash Player はイベントターゲット(この場合はカメラを表すオブジェクト)に対して直接にイベントオブジェクトを送出します。 ただし、イベントターゲットが表示リスト内にある場合、イベントオブジェクトは表示リストの階層内を下ってイベントターゲットまで伝達されていきます。 場合によっては、この表示リスト階層内の経路をイベントオブジェクトが逆に「浮上」(バブリング)していくこともあります。この表示リスト階層の移動をイベントフローと呼びます。 アプリケーションのコードでイベントオブジェクトを受け取る(監視する)には、イベントリスナーを使用します。"イベントリスナー" とは、特定のイベントに応答するために記述する関数やメソッドです。 プログラムがイベントに常に応答するようにするには、イベントターゲットまたはイベントオブジェクトのイベントフローの一部である表示リストオブジェクトのいずれかにイベントリスナーを追加する必要があります。 イベントリスナーコードを作成する場合は、常に次の基本構造に従います(太字の要素は、特定の状況で入力するプレースホルダーです)。 function eventResponse(eventObject:EventType):void { // Actions performed in response to the event go here. } eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse); このコードは 2 つのことを行います。まず、関数を定義します。これはイベントに対応して実行するアクションを指定する方法です。 次に、ソースオブジェクトの addEventListener() メソッドを呼び出します。実際には、イベントの発生時に関数のアクションが実行されるように、指定されたイベントに関数を「サブスクライブ」します。実際にイベントが発生すると、イベントリスナーとして登録されたすべての関数とメソッドのリストが、イベントターゲットによりチェックされます。 次にイベントターゲットは、リストの関数とメソッドを順に呼び出し、イベントオブジェクトをパラメーターとして渡します。 独自のイベントリスナーを作成するには、このコード内の 4 つの項目を変更する必要があります。 最初に、関数の名前を使用したい名前に変更します(eventResponse と記述された 2 か所を変更します)。2 番目に、監視したいイベントにより送出されるイベントオブジェクトに適切なクラス名を指定します(コード内の EventType)。また、特定のイベントに対して適切な定数を指定します(リスト内の EVENT_NAME)。3 番目に、イベントを送出するオブジェクトの addEventListener() メソッドを呼び出します(コード内の eventTarget)。オプションで、関数のパラメーターとして使用する変数の名前も変更できます(コード内の eventObject)。 重要な概念と用語次の参照リストに、イベント処理ルーチンを作成する際に必要となる重要な用語を示します。
|
|