2014-05-23 45 views
0

我在场景1中使用预加载器进行游戏,在时间线上使用以下代码。当有链接到第1帧。如果有音乐文件链接,然后一切加载之前预加载显示出来没有音乐文件有没有更好的方法来修复我的AS2预加载器?

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

的代码工作正常。

关于预加载器,我发现这个很棒的webpage,它讲述了连接问题,并建议我将第2帧中的所有大文件放在预加载器之后,然后跳过它们。按照建议将我的大文件放在第2帧上,并且预加载程序再次运行。

我的问题是,有没有更好的方法来做到这一点。这个解决方案看起来像一个黑客。

回答

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(); 
    } 
} 
相关问题