我有一个SWF,我添加了一个Preloader场景。当我在Flash CS4中按Ctrl + Enter并选择View>时,预加载器工作正常。模拟下载。
预加载器显示,并在完整时,电影按预期继续。
然而,当我将SWF嵌入到某些HTML中,并在任何浏览器中从localhost加载时,直到我右键单击并选择播放,电影才会继续。
当我使用Charles Web调试代理工具并限制连接时,再次预加载工作正常,电影在完成后继续进行?
知道可能出现什么问题吗?这是预加载器的来源:
import flash.events.ProgressEvent;
loaderInfo.addEventListener(ProgressEvent.PROGRESS, update);
function update(e:ProgressEvent):void
{
var percent:Number = Math.floor((e.bytesLoaded * 100) / e.bytesTotal);
if(preloaderClip is MovieClip)
{
preloaderClip.gotoAndStop(percent);
}
if(percent == 100)
{
play();
}
}
// Extra test for IE
var percent:Number =
Math.floor((this.loaderInfo.bytesLoaded * 100) / this.loaderInfo.bytesTotal);
if(percent == 100)
{
nextFrame();
}
stop();
答案 0 :(得分:1)
您的代码中可能存在某种竞争条件,因此当加载接近瞬时时,它无法捕获COMPLETE
事件或其他内容。
如果没有任何代码可以查看,那就更难具体了。
答案 1 :(得分:0)
耶!固定它!我只是添加了一个ADDED_TO_STAGE事件监听器,其代码如下:
private function onAddedToStage(event:Event):void
{
var percent:Number =
Math.floor((this.loaderInfo.bytesLoaded * 100) / this.loaderInfo.bytesTotal);
MonsterDebugger.trace(this, "ADDED_TO_STAGE " + percent + " loaded...");
if(percent == 100)
{
gotoAndPlay("in", "Main");
}
}