我正在使用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);
}
}
不确定这是否有任何帮助。希望有人知道快速修复。我在某处读到这可能与声音文件有关(我确实有几个)但是,不太确定从哪里开始。
提前致谢!
答案 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();
}
}