代码之家  ›  专栏  ›  技术社区  ›  josef.van.niekerk

AS3预加载程序不在浏览器中工作,但在Flash专业版中工作

  •  0
  • josef.van.niekerk  · 技术社区  · 14 年前

    我有一个SWF,添加了一个预加载场景。当我在flash cs4中按下ctrl+enter并选择View>Simulate Download时,预加载程序工作正常。

    预加载程序将显示,当电影已满时,将按预期继续播放。

    但是,当我将SWF嵌入到HTML中,并在任何浏览器中从本地主机加载时,直到右键单击并选择“播放”,电影才会继续。

    当我使用CharlesWebDebuggingProxy工具并限制连接时,再次预加载工作正常,电影在完成后继续吗?

    知道会出什么问题吗?这是预加载程序的源代码:

    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 回复  |  直到 14 年前
        1
  •  1
  •   grapefrukt    14 年前

    您的代码中可能存在某种竞争条件,因此当加载接近瞬时时,它无法捕获 COMPLETE 事件或类似的事情。

    要比没有任何代码的情况下更具体一点是非常困难的。

        2
  •  0
  •   josef.van.niekerk    14 年前

    哎呀!修好了!我只是添加了一个添加到阶段事件侦听器的\代码如下:

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