当我使用一些自定义事件实例化新的 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 实例以供以后参考之前,原始字符串对象仍然存在。关于如何击败这个的任何建议?