インスタンスを連想オブジェクトに格納する前に発生するいくつかのカスタム イベントで新しい MovieClip クラスをインスタンス化するときに存在する競合状態を解決するのに問題があります。
メインクラス
var pages:Object = {
"page1":"page1",
"page2":"page2"
};
for(var pageName:String in pages)
{
pages[pageName] = buildPage(pageName, onReady);
}
function buildPage(pageName:String, onReady:Function)
{
var newPage:MovieClip = new (getDefinitionByName(pageClass) as Class)();
newPage.addEventListener("PAGE_READY", onReady);
newPage.dispatchEvent(new Event("PAGE_CREATE"));
return newPage;
}
function onReady(e:Event)
{
for(var pageName:String in pages)
{
trace(typeof pages[pageName]);
}
}
ページ 1 & 2 クラスは MovieClip を拡張します
function pageX()
{
this.addEventListener("PAGE_CREATE",this.onCreate);
}
function onCreate(e:Event)
{
this.graphics.beginFill(0xFF0000);
this.graphics.drawRect(0,0,200x200);
this.graphics.endFill();
this.dispatchEvent(new Event("PAGE_READY"));
}
残念ながら、これがすべて発火すると、次のようになります。
string
string
object
string
後で参照できるように MovieClip インスタンスを保存する前に、元の文字列オブジェクトがまだ存在しています。これを打ち負かす方法について何か提案はありますか?