2010-08-21 103 views
0

有人能帮我解决这个问题吗?AS3预加载问题

我在Chrome和IE中预加载swf时遇到了一些问题。 它只适用于Firefox。

当我预加载Flash,Iam获得bytesTotal为0. 因此,当我bytesLoaded除以bytesTotal将导致无穷大。

我在GZIP上看过这篇文章。 http://patrickmcd.com/2009/04/20/flash-preloading-errors-turn-off-gzip/

但测试了响应压缩没有被压缩。

这里是我的预加载脚本:

addEventListener(Event.ENTER_FRAME, preloadSelf); 

function preloadSelf(e:Event):void { 
     var bytestotal:int = stage.loaderInfo.bytesTotal; 
     var bytesloaded:int = stage.loaderInfo.bytesLoaded; 
     var shellLoaded:int = bytesloaded/bytestotal * 100; 
     trace("bytestotal : ", bytestotal); 
     trace("bytesloaded : ", bytesloaded); 
     trace("shellLoaded : ", shellLoaded); 


     if (shellLoaded== 100) { 
      removeEventListener(Event.ENTER_FRAME, preloadSelf); 
      doSomethingElse(); 
     } 

}

回答

0
 
addEventListener(Event.ENTER_FRAME, preloadSelf); 

function preloadSelf(e:Event):void { 

    if(stage.loaderInfo.bytesLoaded > 0) 
    { 
     var bytestotal:int = stage.loaderInfo.bytesTotal; 
     var bytesloaded:int = stage.loaderInfo.bytesLoaded; 
     var shellLoaded:int = bytesloaded/bytestotal * 100; 
     trace("bytestotal : ", bytestotal); 
     trace("bytesloaded : ", bytesloaded); 
     trace("shellLoaded : ", shellLoaded); 


     if (shellLoaded== 100) { 
      removeEventListener(Event.ENTER_FRAME, preloadSelf); 
      doSomethingElse(); 
     } 
    } 
} 

+0

为什么他的包裹ENTER_FRAME逻辑,如果声明的帮助? – Aaron 2010-08-21 17:22:54

+0

只能真正回答第3段,它不能解决任何问题,它是一个安全开关。由于存在一个EnterFrame事件,而不是在内容开始加载时插入的ProgressEvent,因此理论上函数可以返回0值。另一方面,我们不能肯定这是与链接文章中提到的情况相同的情况。 – PatrickS 2010-08-21 17:54:56