我在场景1中有一个带预加载器的游戏,时间线上有以下代码。
stop();
loadingBar._xscale = 1;
var loadingCall:Number = setInterval(preloadSite, 50);
function preloadSite():Void {
var siteLoaded:Number = _root.getBytesLoaded();
var siteTotal:Number = _root.getBytesTotal();
var percentage:Number = Math.round(siteLoaded/siteTotal*100);
loadingBar._xscale = percentage;
bytesDisplay.text = percentage + "%";
if (siteLoaded >= siteTotal) {
clearInterval(loadingCall);
gotoAndPlay("StartMenu", 1);
}
}
当没有链接到第1帧的音乐文件时,代码工作正常。如果链接了音乐文件,则在预加载器出现之前所有内容都会加载。
我发现这个关于预加载器的webpage很棒,它讲的是链接问题,并建议我在预加载器之后将所有大文件放在第2帧上,然后跳过它们。我按照建议将大文件放在第2帧上,预加载器再次工作。
我的问题是,有没有更好的方法来做到这一点。这个解决方案看起来像是一个黑客。
答案 0 :(得分:1)
我能想到的唯一更好的选择是不将MP3文件存储在Flash文件中,而是将其加载到预加载器中,并附上Flash文件的内容。这是因为您将MP3文件存储在其他地方(如服务器上)。
stop();
loadingBar._xscale = 1;
var sound:Sound = new Sound();
sound.loadSound("http://www.example.com/sound.mp3", false);
var loadingCall:Number = setInterval(preloadSite, 50);
function preloadSite():Void {
var siteLoaded:Number = _root.getBytesLoaded()+sound.getBytesLoaded();
var siteTotal:Number = _root.getBytesTotal()+sound.getBytesTotal();
var percentage:Number = Math.round(siteLoaded / siteTotal * 100);
loadingBar._xscale = percentage;
bytesDisplay.text = percentage + "%";
if (siteLoaded >= siteTotal) {
clearInterval(loadingCall);
gotoAndPlay("StartMenu", 1);
sound.start();
}
}