Labo
Progression Listenコマンド
Progressionのシリアルリスト内で、ロードコンプリート後に次のアクションを起こすスマートなやり方がないかと探していたのですが、Listenコマンドがかなり便利です。
例えばキャストスプライトクラス内で、スプライト自身がディスプレイリスト追加時に、 任意の外部画像を読み込んだ後で、ロードオブジェクトをフェードインしたい場合はこう記述します。
protected override function _onCastAdded():void { var loader = new Loader(); loader.load(new URLRequest("img/photo_1.jpg")); // 実行したいコマンドを登録します。 addCommand( // Listenコマンド(イベント発生後に次のコマンドに進む) new Listen( loader.contentLoaderInfo, Event.COMPLETE, { timeOut: 0 } ), // ここからの処理は上のイベントが発生するまで待ってくれる new Prop( loader, { alpha:0 } ), new AddChild( this, loader ), // Tween開始 new DoTweener(loader, { alpha:1, time:2, transition:"easeInOutQuad" }) ); }
このように非常にシンプルに書くことができる上、Listen内のプロパティの書き方も、普通のリスナーの書き順とほぼ同じで、混乱もしません。最後の関数の部分がtimeOutに変わっただけです。
【普通のリスナー】
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
【Listenコマンド】
new Listen( loader.contentLoaderInfo, Event.COMPLETE, { timeOut: 0 } ),
Listenコマンドを使用する際は、第3引数でtimeOutを"0″にしておかないとデフォルト15秒でCommandTimeOutErrorエラーが発生しコマンドリストが終了してしまうそうです。
今回はcuegraphixさんのエントリー記事を参考にさせていただきました。
http://blog.cuegraphix.com/?p=25
こちらの記事ではさらにカスタムコンプリートイベントを作成し、Listenコマンドを使っています。
09.07.15.AM12:24
http://plamo-tokyo.com/site/mt-tb.cgi/48