我正在开发一个使用swf加载元素并为加载的swf添加属性的应用程序。我使用SWFLoader加载电影,在COMPLETE事件上我将加载的MovieClip移动到特定的帧,然后列出其DisplayList。我发现,如果我很快遍历列表,它会被加载。也许代码更干净:
loader.addEventListener(Event.COMPLETE, function(evt:Event):void{
var mc:MovieClip = MovieClip(loader.content);
mc.gotoAndStop(frameNumber);
for(i = 0; i < mc.numChildren; i++){
trace(mc.getChildAt(i));
}
}
我想念加载的swf中的一些孩子,在某些情况下我得到空值。现在我添加了一个Timer(),它在列出显示列表之前等待250ms并且工作正常但速度很慢且效率很低。
另一个奇怪的行为是,使用上一个片段,我无法获得一些MovieClip,即使Timer已就位。我必须在加载的swf中插入一个函数,如下所示:
function getItems():Array{
var res:Array = [];
for(var i:uint = 0; i < this.numChildren; i++){
res.push(this.getChildAt(i));
}
return res;
}
检索正确的儿童名单。
非常感谢
答案 0 :(得分:0)
您使用的是Loader类,如果是这样,您需要将事件侦听器添加到加载器的contentLoaderInfo属性,而不是加载器对象本身。这是一个非常常见的错误。
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(evt:Event):void{
var mc:MovieClip = MovieClip(loader.content);
mc.gotoAndStop(frameNumber);
for(i = 0; i < mc.numChildren; i++){
trace(mc.getChildAt(i));
}
}
HTH