Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 の学習 > イベントの処理 > コンポーネントでのイベントリスナーの使用 | |||
コンポーネントを操作する場合、イベントリスナーのシンタックスが少し異なります。コンポーネントは、イベントを生成します。これらのイベントは、リスナーオブジェクトまたはカスタム関数を使用して特別に監視する必要があります。
次の例では、イベントリスナーを使用して、動的にロードされるイメージのダウンロードの進捗状況を監視する方法について説明します。
System.security.allowDomain("http://www.helpexamples.com");
var loaderListener:Object = new Object();
loaderListener.progress = function(evt_obj:Object):Void {
trace(evt_obj.type); // 進捗状況
trace("\t" + evt_obj.target.bytesLoaded + " of " + evt_obj.target.bytesTotal + " bytes loaded");
}
loaderListener.complete = function(evt_obj:Object):Void {
trace(evt_obj.type); // 完了
}
my_ldr.addEventListener("progress", loaderListener);
my_ldr.addEventListener("complete", loaderListener);
my_ldr.load("http://www.helpexamples.com/flash/images/image1.jpg");
この ActionScript コードは、progress と complete という 2 つのイベントを監視する loaderListener という名前のリスナーオブジェクトを定義します。これらの各イベントが送り出されると、これらのコードが実行され、[出力] パネルにデバッグテキストが表示されます (オーサリングツールで SWF ファイルをテストする場合)。
次に、my_ldr インスタンスに対して 2 つの指定した各イベント (progress と complete) を監視するように指示し、イベントが送り出されたときに実行するリスナーオブジェクトまたは関数を指定します。最後に、Loader.load() メソッドが呼び出され、イメージのダウンロードの開始をトリガします。
イメージは、ステージ上の Loader インスタンス内にダウンロードされ、[出力] パネルにいくつかのメッセージが表示されます。ダウンロードするイメージのサイズ、およびイメージがユーザーのローカルシステムにキャッシュされたかどうかに応じて、progress イベントは何度も送り出される可能性があります。これに対して、complete イベントは、イメージが完全にダウンロードされた後に 1 回だけ送り出されます。
コンポーネントおよび dispatch イベントを操作する場合のシンタックスは、前の例のイベントリスナーの場合と少し異なります。特に、addListener() を呼び出す代わりに addEventListener() メソッドを呼び出す必要があります。さらに、イベントリスナーオブジェクトまたは関数に加えて、監視する特定のイベントを指定する必要があります。
リスナーオブジェクトを使う代わりに、コンポーネントでのイベントリスナーの使用で説明されている最初の手順にしたがってカスタム関数を使用できます。前の例のコードは、次のように書き直すことができます。
System.security.allowDomain("http://www.helpexamples.com");
my_ldr.addEventListener("progress", progressListener);
my_ldr.addEventListener("complete", completeListener);
my_ldr.load("http://www.helpexamples.com/flash/images/image1.png");
function progressListener(evt_obj:Object):Void {
trace(evt_obj.type); // 進捗状況
trace("\t" + evt_obj.target.bytesLoaded + " of " + evt_obj.target.bytesTotal + " bytes loaded");
}
function completeListener(evt_obj:Object):Void {
trace(evt_obj.type); // 完了
}
|
メモ |
|
前の例では、常に、 |
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000839.html