就像每個程序員一樣,我面臨一個棘手的挑戰,我希望有人能與我分享一些知識。 我創建了一個遊戲,併爲每個遊戲組件(如音頻,視頻,圖片)創建了一個swf文件(庫)。在主文件中,我試圖使用Loader類加載我的swf文件。 我想做一個預加載器,我想計算從我所有的SWF文件加載的字節的百分比。我意識到在同一時間加載3個裝載機會讓我的遊戲變慢。我試圖一次上傳一個文件,但我不知道如何在不使用ProgressEvent(這裏我可以訪問bytesTotal變量)的情況下捕獲從我的文件加載的字節。 有沒有人遇到類似的問題,可以分享小費或鏈接? 問候和星期五好!加載多個swf文件
回答
我強烈推薦您的GreenSock's 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
,它會通知您進度開始時的最終尺寸。
記住:get就像一個流。你永遠不會知道最終的大小,直到文件準備就緒!
new ImageLoader("1.jpg", {estimatedBytes:26000});
簡單的解決方法:
生成xml或json列表中,包含URL,並且每個預加載的元件的總大小。您可以在php(例如)中使用一些自動化功能來執行此操作,請檢查此SO answer。
用LoaderMax預載xml/json文件列表並在AS3中解析它。
加載xml中的所有文件並添加正確的文件大小。而已。
你可以找到完整的AS3文檔here。
昨天我測試過了,cept0。但是,當它加載多個文件時,它並不知道我的裝載機具有多大的尺寸。它加載第一個文件直到它達到100%,接下來,第二個文件等我可以看到它使用debuger。有沒有辦法LoaderMax加載所有的文件,而無需在ProgressEvent方法上重新啓動「進度值」?對不起,我英語不好。 – rennanreis
我編輯了我的答案。希望這些幫助你。 – mate64
我會試試。感謝您的幫助。 – rennanreis
開始載入文件,獲取文件大小並在收到大小信息後立即關閉流。
然後根據需要逐個加載文件。
或者編譯你的主swf併合併入代碼庫(如果這適合你的話)。
如何編譯合併到代碼庫user1875642中的主SWF文件? – rennanreis
如果你的圖書館只包含資產(我想這是你的情況),你可以將它們包含到你的主要swf中嵌入(http://actionscriptexamples.com/2008/10/26/embedding-images-into-a-flash -document-使用最嵌入的元數據/)。如果您的庫包含您使用的一些代碼,那麼有一個編譯器選項可將庫合併到代碼中(http://help.adobe.com/zh_CN/flash/cs/using/WS3e7c64e37a1d85e1e229110db38dec34-7fa4a.html)。 – user1875642
- 1. 加載swf文件
- 2. SWF文件加載
- 3. 加載SWF文件
- 4. 將SWF文件加載到另一個SWF文件中
- 5. Javascript載入多個SWF文件
- 6. 加載外部SWF文件
- 7. 卸載swf文件並在as3中加載另一個swf文件
- 8. AS 3添加多個SWF文件
- 9. 我需要刪除加載的SWF文件加載到不同的SWF文件
- 10. 多個swf文件無法在DNN中加載5.X
- 11. 使用swf加載另一個swf文件的Flex Swfloader
- 12. 在aspx頁面上加載swf文件swf文件
- 13. flash actionscript 1.0,將外部swf文件加載到父SWF文件
- 14. 在SWF文件結尾的視頻之後加載另一個SWF文件
- 15. AS#3加載SWF多
- 16. swf中加載的swf文件中的字體!文字消失
- 17. AS3加載外部swf文件單個文件
- 18. ActionScript 3.0中無法加載SWF文件
- 19. 在ASP.NET中加載SWF文件
- 20. 通過YouTube加載SWF文件
- 21. 用LightGallery在iframe中加載swf文件?
- 22. 無法在FlexPaper中加載swf文件
- 23. ASP.NET MVC - SWF文件不加載
- 24. 在NSView中加載SWF文件
- 25. 在Haxe中加載SWF文件?
- 26. Ajax通過jquery加載swf文件
- 27. Flash AS3加載SWF文件到橫幅
- 28. 如何從byteArray加載swf文件?
- 29. 在flex中加載遠程swf文件
- 30. 加載外部SWF文件問題
你需要得到swf加載的總字節數? –