ProgressionのCommandクラスを使いこなしたいよ(その3)
ということで3回目。今回は外部データの読込みの際に発生する非同期処理を、Progressionのコマンドで扱う方法についてです。
前回、前々回のエントリーを読返してみて、余りにも冗長に過ぎたかなぁという気がするので、今回はniumさんに教えてもらった方法をさらっと紹介する程度です。
まずはLoadURLコマンドを使った外部ファイルの読込み。
addCommnad(
new LoadURL(new URLRequest("hoge.xml"))
.after(null,
function():void {
trace(this.data);
}
}
),
new Trace("このコマンドはデータ読込み後に実行されます")
)
Commandクラスのafter()メソッドで指定した関数内で、読込み完了したデータの中身を、LoadURLのdataプロパティから取得することができるんですねー。
LoadURLは外部データの読込みが完了するまでcommandCompleteイベントを送出しないので、このコマンド以降に登録されているコマンドは、外部データ取得まで実行されません。データ取得をしながら、一方で別のコマンドを実行したい場合は、ParallelListコマンドリストを使って、並列処理をしてやればいいんですね。
お次は外部画像やswfを読込む場合は、Funcコマンドを使ってこんな感じ。
var loader:Loader = new Loader();
addCommand(
new AddChild(progression.container, loader),
new Func(null, loader.load, [new URLRequest("hoge.jpg")], 0, loader.contentLoaderInfo, Event.COMPLETE),
new Trace("このコマンドはデータ読込み後に実行されます")
)
第2引数に実行したい関数を指定。その関数に渡すパラメータは、第3引数で配列で指定。第5引数と第6引数はそれぞれ、処理の終了イベントを送出するEventDispatcher、そしてその終了イベントの種類です。
Loaderクラスのロードに関するイベントは、contentLoaderInfoプロパティに格納されたLoaderInfoオブジェクトによって送出されるので、ちょい注意が必要かもしれませんね。
指定した終了イベントが送出されるまで、コマンドの処理を停止してくれるので便利ですよと。
実はもうちょっと実践的なサンプルを作りたかったのですが、(多分Progression以外の基本的なところで)未解決の問題があるので、とりあえず今回はこんな感じで終わりです。次回は僕がカスタムコマンドを作ってハマったお話をしようかと思ってます。
トラックバック(1)
このブログ記事を参照しているブログ一覧: ProgressionのCommandクラスを使いこなしたいよ(その3)
このブログ記事に対するトラックバックURL: http://www.studio-hedgehog.com/cgi/mt/mt-tb.cgi/218
Progression FrameworkのFuncコマンド+loader.loadでロード失敗すると、もうどうしようもない疑惑 Progression ... 続きを読む

コメントする