2011-05-12 18 views
3

我正在使用Flash CS5/AS3進行遊戲,並試圖讓我的預加載程序正常工作。目前,當我使用'模擬下載'加載SWF文件時,文件將加載,但是我的預加載器不會顯示。預加載程序確實顯示了裝載量在90%左右時的情況。Flash預加載程序僅在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

可能你仍然在第一幀中引用重量。如果您使用的是Windows,則可以嘗試使用SWix(http://swixkit.com)分析swf。查找SymbolClass內容。 – alxx 2011-05-12 11:33:47

回答

0

當您編譯&運行您的應用程序時,單擊查看,然後單擊菜單中的帶寬分析器。這可以讓你看到每幀的數據在這個幀上加載了多少數據。如果你的第一幀超過30kb左右,那麼你有問題。儘量讓你的preloader儘可能簡單(沒有圖片等)。也就像你說的那樣,確保你已經取消了所有資產的「第1幀導出」。我想用root.loaderInfo代替this.stage.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(); 
    } 
} 
2

如果你有你的主時間軸的第1幀,在所有的任何內容,你將永遠無法預加載的內容 - 你的電影纔會開始第1幀播放一旦內容被加載。嘗試將所有不必要的「東西」移動到第2幀,並將該幀設置爲動作的輸出幀。您現在應該在90%之前看到您的預加載器。完成預加載後,使用gotoAndPlay(2)將電影發送到第2幀。

或者(也許是一種最佳實踐),製作一個「加載程序」SWF,其唯一的功能是加載你的主要瑞士法郎。將你的預加載器放入該加載器的swf中,並將其他所有內容保存在主SWF中。使用Loader類或BulkLoader等第三方加載庫加載主SWF,並在加載完成後將其放置在舞臺上。

希望有幫助。

相關問題