[英]Loading multiple swf files
像每個程序員一樣,我也面臨着艱巨的挑戰,我希望有人可以與我分享一些知識。 我正在創建一個游戲,並且為每個游戲組件(例如音頻,視頻,圖片)創建了一個swf文件(庫)。 在主文件中,我試圖使用Loader類加載SWF文件。 我想做一個預加載器,我想計算所有我的swf文件中加載的字節百分比。 我意識到同時加載3個加載程序會使我的游戲變慢。 我嘗試一次上傳一個文件,但是我不知道如何在不使用ProgressEvent的情況下捕獲從文件加載的字節(這里我可以訪問bytesTotal變量)。 是否有人遇到類似的問題並且可以分享提示或鏈接? 問候和耶穌受難日!
我強烈建議您使用GreenSock的LoaderMax庫。 它簡化並增強了整個過程。 易於安裝且體積小。
import com.greensock.*;
import com.greensock.loading.*;
import com.greensock.events.LoaderEvent;
import com.greensock.loading.display.*;
// Create a LoaderMax named "gameQueue" and bind onProgress, onComplete and onError listeners
var queue:LoaderMax = new LoaderMax({name:"gameQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler});
// Append several loaders
queue.append( new XMLLoader("xml/data.xml", {name:"xmlDoc"}) );
queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1", estimatedBytes:2400, container:this, alpha:0, width:250, height:150, scaleMode:"proportionalInside"}) );
queue.append( new SWFLoader("swf/child.swf", {name:"childClip", estimatedBytes:3000, container:this, x:250, autoPlay:false}) );
queue.append( new MP3Loader("mp3/audio.mp3", {name:"audio", repeat:2, autoPlay:true}) );
// Run
queue.load();
function progressHandler(event:LoaderEvent):void {
trace("progress: " + event.target.progress);
}
function completeHandler(event:LoaderEvent):void {
var image:ContentDisplay = LoaderMax.getContent("photo1");
TweenLite.to(image, 1, {alpha:1, y:100});
trace(event.target + " is complete!");
}
function errorHandler(event:LoaderEvent):void {
trace("error occured with " + event.target + ": " + event.text);
}
您可以顯示單個裝載機或裝載機組的進度。
為了准確 計算一組加載程序的總體進度 ,重要的是要知道每個子加載程序的總文件大小( bytesTotal
)。 但是,如果某些文件尚未開始加載,那么您的加載器怎么可能知道它們的大小?
沒有TCP packet
,進度開始時會通知您最終大小。
記住: 獲取就像一條小溪。 在文件准備就緒之前,您永遠不會知道最終的大小!
new ImageLoader("1.jpg", {estimatedBytes:26000});
一個簡單的解決方法:
生成一個xml或json列表,其中包含URL和每個可預加載元素的總大小。 您可以使用php中的一些自動化功能來執行此操作(例如),請檢查此SO答案 。
使用LoaderMax預加載xml / json文件列表,並在AS3中進行解析。
從xml內加載所有文件,並添加正確的文件大小。 而已。
您可以在此處找到完整的AS3文檔。
收到大小信息后,立即開始加載文件,獲取文件大小並關閉流。
然后根據需要一一加載文件。
或通過合並到代碼庫中來編譯您的主SWF文件(如果適合您的話)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.