つい最近addSceneFromXMLでXMLからシーン作成というエントリを書いたのですが、早くもprogressionフレームワークの生みの親nium先生から添削が入りました!!すごい!
お忙しい身なのに本当に申し訳ないです。。。
で、添削内容を見てみます。
私の最初のコードはXMLを読み出すのに普通にURLLoaderを使用していたのですが、progressionにLoadURLというコマンドクラスがありまして、そちらを使用されておりました。
LoadURLはファイルを読み込ませるのに使用します。
これを使用する事ですごくスマートな記述が出来るようになります。
添削該当箇所は以下になります。
protected override function _onLoad():void {
// 実行したいコマンドを登録します。
addCommand(
//LoadURLコマンドの登録
new LoadURL( new URLRequest( "scenedata.xml" ) ),
function():void {
// PRML データからシーン構造を作成
//this.latestDataでLoadURLコマンドで取得したデータを参照
addSceneFromXML( new XML( this.latestData ) );
// ParallelList を作成
var _pList:ParallelList = new ParallelList();
//ボタンの作成
for ( var i:int = 0; i < numScenes; i++ ) {
var _xmlData:XMLList = new XMLList( scenes[i].sceneInfo.data );
var _obj:Object = XMLUtil.xmlToObject( _xmlData );
var imageButton:ThumbnailSprite = new ThumbnailSprite();
imageButton.SetImageUrl = _obj.imageurl;
imageButton.sceneId = scenes[i].sceneId;
imageButton.loadImage();
imageButton.x = ( 110 * i ) + 10;
imageButton.y = 500;
_pList.addCommand(
new AddChild( progression.container, imageButton )
);
}
this.parent.insertCommand(
_pList,
new Goto( scenes[0].sceneId )
);
}
);
}
そもそもコマンドクラスのlatestData の存在を知らなかった。。。
リファレンスには
CommandList 上で、自身より前に実行された外部データ読み込み系のコマンドが持っている外部データを取得します。
と書いてあります。
全然把握しきれてませんね私。。。
とりあえずaddEventListenerを使う前にコマンドで出来ないか調べるという事が重要と思いました。
という事で修正後プロジェクトを置いておきます。

記事参考にさせていただいていたのですが、addSceneFromXML するとき、なぜコンストラクタでクラスを書いておかないといけないのは、参照できないってことなんでしょうか。ずーっと、そういうものだとおもっていたのですが。最近またなんでダロゥって、気になり始めました。
meirouさん>
おっと!今頃気付きました。。。すいません。
おそらくgetDefinitionByNameを利用しているのでこれとかこれが参考になると思います!
swfには未使用のクラスは含まれてこないから、見つからないっていわれるんですね。だから、一度使っておいてやるという感じでしょうか。
meirouさん>
そうだと思いますねー