Flash预加载器仅从90%开始

时间:2011-05-12 11:22:31

标签: flash actionscript-3 flash-cs5 preloader

我正在使用Flash CS5 / AS3开发游戏,我正在尝试让我的预加载器工作。目前,当我使用“模拟下载”加载SWF文件时,文件将加载但我的预加载器将不会显示。预加载器确实显示负载大约为90%时的情况。

我已经取消选中'导出到第一帧',因为这是互联网告诉我要做的事情,但是对于几乎每个版本的Flash / AS都有很多不同的教程,我很困惑;不知道如何解决这个问题。

我的预加载器代码如下:

stop();

this.addEventListener(Event.ENTER_FRAME, loading);

function loading(e:Event):void{

var total:Number = this.stage.loaderInfo.bytesTotal;
var loaded:Number = this.stage.loaderInfo.bytesLoaded;

percent_txt.text = Math.floor((loaded/total)*100)+ "%";  

if (total == loaded){
play();
this.removeEventListener(Event.ENTER_FRAME, loading);
}

}

不确定这是否有任何帮助。希望有人知道快速修复。我在某处读到这可能与声音文件有关(我确实有几个)但是,不太确定从哪里开始。

提前致谢!

2 个答案:

答案 0 :(得分:2)

如果您在主时间轴的第1帧上有任何内容,您将永远无法预加载该内容 - 只有在加载第1帧内容后,您的电影才会开始播放。尝试将所有非必要的“东西”移动到第2帧,并将该帧设置为actionscript的导出帧。您现在应该在90%之前看到您的预加载器。预加载完成后,使用gotoAndPlay(2)将影片发送到第2帧。

或者(也许是最佳实践),制作一个“加载器”swf,其唯一功能是加载到主swf中。将您的预加载器放在该加载器swf中,而不是其他内容,并将所有其他内容保存在主SWF中。使用Loader类或第三方加载库(如BulkLoader)加载主swf,并在加载完成后将其放置在舞台上。

希望这有帮助。

答案 1 :(得分:0)

当你编译&运行您的应用程序,单击View,然后单击菜单中的Bandwidth Profiler。这将让您了解每个帧在该帧上加载的数据量有多大。如果您的第一帧超过30kb,那么您就遇到了问题。尽量保持预加载器的简单(没有图像等)。也像你说的那样,确保你已取消选择所有资产的“第1帧中的导出”。

我也会将this.stage.loaderInfo替换为root.loaderInfo

stop();

var total:uint = root.loaderInfo.bytesTotal;
var loaded:uint = 0;

addEventListener(Event.ENTER_FRAME, loading);
function loading(e:Event):void
{
    loaded = root.loaderInfo.bytesLoaded;
    percent_txt.text = Math.floor((loaded/total)*100)+ "%";  

    if(total >= loaded)
    {
        removeEventListener(Event.ENTER_FRAME, loading);
        play();
    }
}