当加载的影片剪辑在右帧中准备就绪时获取事件
我正在开发一个使用 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() ,它在列出显示列表之前等待 250 毫秒并且可以工作,但它非常慢且效率低下。
另一个奇怪的行为是,使用前面的代码片段,即使计时器就位,我也无法获得一些影片剪辑。我必须在加载的 swf 中插入一个函数,如下所示:
function getItems():Array{
var res:Array = [];
for(var i:uint = 0; i < this.numChildren; i++){
res.push(this.getChildAt(i));
}
return res;
}
检索正确的子项列表。
多谢
i'm developing an app that use swf to load elements and add properties to the loaded swf. I use SWFLoader to load the movie and on the COMPLETE event i move the loaded MovieClip to a specific frame and then list its DisplayList. I've discovered that if i traverse the list soon it's note loaded. Maybe it's cleaner with code:
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));
}
}
I miss some children from the loaded swf and in some cases i get null values. Now i've added a Timer() that wait 250ms before listing the display list and works but it's very slow and inefficient.
The other strange behaviour is that with the previous snippet i can't get some MovieClip, even with the Timer in place. I had to insert a function in the loaded swf like this:
function getItems():Array{
var res:Array = [];
for(var i:uint = 0; i < this.numChildren; i++){
res.push(this.getChildAt(i));
}
return res;
}
To retrieve the correct list of children.
Thanks a lot
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否使用 Loader 类(如果是) ,您需要将事件侦听器添加到加载器的 contentLoaderInfo 属性,而不是加载器对象本身。这是一个非常常见的错误。
华泰
Are you using the Loader class, if so, you need to add the event listener to the loader's contentLoaderInfo property, not the loader object itself. It is a very common mistake.
HTH