AS3 Preloader无法在浏览器中运行,但在Flash Professional中运行

时间:2010-05-10 14:57:35

标签: flash actionscript-3

我有一个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();

2 个答案:

答案 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");
    }
}