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

Voice

Leave a Reply
name:
e-mail:
url:
voice:

Track Back

http://plamo-tokyo.com/site/mt-tb.cgi/48