【发布时间】:2012-10-20 02:29:20
【问题描述】:
我确定这是一个简单的问题,但我忽略了一些明显的问题。
我有一个外部预加载 SWF,它只包含一个图层上的影片剪辑 (loader_graphic),在第一个(也是唯一一个)帧中;和另一层上的加载脚本,在第一帧。影片剪辑只是一个没有进度指示器的简单循环动画。如果我不包含脚本,它会很好用。
脚本会加载外部 SWF,它本身就可以正常工作。
当我将这两者结合起来时,我会得到影片剪辑的第一帧,然后它会冻结,直到外部 SWF 完全加载。加载后,它会播放一次并停止。我对 AS3 有点陌生,而且我知道预加载是已经改变的约定之一,所以我可能没有正确编码:
loader_graphic.play();
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.ProgressEvent;
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
l.load(new URLRequest("external.swf"));
function loop(e:ProgressEvent):void
{
var perc:Number = e.bytesLoaded / e.bytesTotal;
}
function done(e:Event):void
{
loader_graphic.stop();
addChild(l);
}
感谢任何帮助。
【问题讨论】:
-
这可能不相关,但请确保 external.swf 中没有脚本引用舞台,因为在加载影片使用 addChild() 添加它之前,舞台属性将为空。在 external.swf 的构造函数中放入类似这样的内容:
addEventListener(Event.ADDED_TO_STAGE, init);并且在调用 init() 之前不要引用阶段。
标签: actionscript-3 flash movieclip preloader flash-cs6