簡體   English   中英

加載多個SWF文件

[英]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});

一個簡單的解決方法:

  1. 生成一個列表,其中包含URL和每個可預加載元素的總大小。 您可以使用一些自動化功能來執行此操作(例如),請檢查此SO答案

  2. 使用LoaderMax預加載xml / json文件列表,並在AS3中進行解析。

  3. 從xml內加載所有文件,並添加正確的文件大小。 而已。

您可以在此處找到完整的AS3文檔。

收到大小信息后,立即開始加載文件,獲取文件大小並關閉流。

然后根據需要一一加載文件。

或通過合並到代碼庫中來編譯您的主SWF文件(如果適合您的話)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM