イベント処理の基本

イベント処理の概要

イベントとは、SWF ファイル内でのプログラマとして関心のあるさまざまな事象の発生と考えることができます。たとえば、大部分の SWF ファイルは、マウスクリックに応答する単純なものから、フォームに入力されたデータの受け入れまたは処理のような複雑なものまで、何らかのユーザーの操作をサポートします。ユーザーと SWF ファイルとの間で行われるそのような対話操作は、イベントの一種と考えられます。また、ユーザーによる直接的な操作が行われていないときも、サーバーからのデータのロードが終了した場合や、接続されたカメラがアクティブになった場合などにイベントが発生することがあります。

ActionScript 3.0 では、1 回のイベントを 1 個のイベントオブジェクト (Event クラスまたはそのサブクラスのインスタンス) として表現します。イベントオブジェクトには、具体的なイベントに関する情報が格納されているのに加え、イベントオブジェクトを操作する際に役立つメソッドが備わっています。たとえば Flash Player では、マウスクリックを検出すると、その特定のマウスクリックイベントを表すイベントオブジェクト (MouseEvent クラスのインスタンス) を作成します。

次に、Flash Player は作成したイベントオブジェクトを "送出" します。これは、イベントのターゲットとなるオブジェクトにイベントオブジェクトを引き渡すという意味です。イベントオブジェクトの送出先となるオブジェクトを、"イベントターゲット" と呼びます。たとえば、コンピュータに取り付けられているカメラがアクティブになった場合、Flash Player はイベントターゲット (この場合はカメラを表すオブジェクト) に対して直接にイベントオブジェクトを送出します。ただし、イベントターゲットが表示リスト内にある場合、イベントオブジェクトは表示リストの階層内を下ってイベントターゲットまで伝達されていきます。場合によっては、この表示リスト階層内の経路をイベントオブジェクトが逆に "浮上" (バブリング) していくこともあります。この表示リスト階層の移動を "イベントフロー" と呼びます。

アプリケーションのコードでイベントを受け取る (監視する) には、イベントリスナーを使用します。"イベントリスナー" とは、特定のイベントに応答するために記述する関数やメソッドです。プログラムがイベントに常に応答するようにするには、イベントターゲットまたはイベントオブジェクトのイベントフローの一部である表示リストオブジェクトのいずれかにイベントリスナーを追加する必要があります。

イベントリスナーコードを作成する場合は、常に次の基本構造に従います (太字の要素は、特定の状況で入力するプレースホルダです)。

function eventResponse(eventObject:EventType):void
{
    // イベントに応じて実行されるアクションがここで実行されます。
}

eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse);

このコードは 2 つの操作を実行します。まず、関数を定義します。これはイベントに対応して実行するアクションを指定する方法です。次に、ソースオブジェクトの addEventListener() メソッドを呼び出します。実際には、イベントの発生時に関数のアクションが実行されるように、指定されたイベントに関数を "サブスクライブ" します。実際にイベントが発生すると、イベントリスナーとして登録されたすべての関数とメソッドのリストが、イベントターゲットによりチェックされます。その後、関数とメソッドが順に呼び出され、パラメータとしてイベントオブジェクトが渡されます。

独自のイベントリスナーを作成するには、このコード内の 4 つの項目を変更する必要があります。最初に、関数の名前を使用したい名前に変更します (eventResponse と記述された 2 か所を変更します)。2 番目に、監視したいイベントにより送出されるイベントオブジェクトに適切なクラス名を指定します (コード内の EventType)。また、特定のイベントに対して適切な定数を指定します (リスト内の EVENT_NAME)。3 番目に、イベントを送出するオブジェクトの addEventListener() メソッドを呼び出します (コード内の eventTarget)。オプションで、関数のパラメータとして使用する変数の名前も変更できます (コード内の eventObject)。

一般的なイベント処理のタスク

この章では、次のような一般的なイベント処理タスクについて説明します。

重要な概念と用語

次の参照リストに、この章で使われる重要な用語を示します。

章内の例の使用

この章の進行に合わせて、サンプルコードリストを実際にテストすることができます。基本的に、この章のすべてのコードリストには、コードの結果をテストするための trace() 関数呼び出しが含まれています。この章のコードリストをテストするには:

  1. 空の Flash ドキュメントを作成します。
  2. タイムラインのキーフレームを選択します。
  3. [アクション] パネルを開いて、コードリストを [スクリプト] ペインにコピーします。
  4. [制御]-[ムービープレビュー] を使用して、プログラムを実行します。

    コードリストの trace() 関数の結果が [出力] パネルに表示されます。

コードリストの一部はより複雑で、クラスとして作成されています。これらの例をテストするには:

  1. 空の Flash ドキュメントを作成して、コンピュータに保存します。
  2. 新しい ActionScript ファイルを作成して、Flash ドキュメントと同じディレクトリに保存します。ファイル名は、コードリスト内のクラスの名前と同じ名前にしてください。たとえば、コードリストで EventTest という名前のクラスが定義されている場合は、EventTest.as という名前で ActionScript ファイルを保存します。
  3. コードリストを ActionScript ファイルにコピーして、ファイルを保存します。
  4. Flash ドキュメントで、ステージの何もない部分または作業スペースをクリックして、ドキュメントのプロパティインスペクタを起動します。
  5. プロパティインスペクタの [ドキュメントクラス] フィールドに、テキストからコピーした ActionScript クラスの名前を入力します。
  6. [制御]-[ムービープレビュー] を使用して、プログラムを実行します。

    例の結果が [出力] パネルに表示されます。

サンプルコードリストをテストする手法の詳細については、章内のコード例のテスト を参照してください。


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000135.html