簡體   English   中英

在AS3中加載圖像的方法

[英]Ways to load images in AS3

如何在as3中加載圖片:

  1. 一次全部加載它們,例如像這樣(偽as3代碼):

     for each (var url:String in images){ loader.load(url); } 
  2. 或一一加載(再次,偽代碼):

     loader.load(images.shift()) onComplete(){ loadNext(images.shift()); } 

哪種方法更快,性能更好?

這個問題沒有簡單的答案。

當Flash加載文件(在瀏覽器中)時,它取決於瀏覽器來管理http事務,緩存等。如果只有幾個圖像並且它們不太大,則第一種方法更易於編程,並且您可以取決於瀏覽器的http加載隊列來管理文件。

如果您有許多文件(數十個和數十個),則以多種方式將其交錯可能會更好。 首先,每個對象的創建都是非常昂貴的,對於裝載程序,您將最終將事件偵聽器附加到它,甚至可能顯示裝載動畫。 這非常昂貴,並且會降低Flash的速度,從而降低應用程序的響應速度。 其次,通過交錯它們,您可以顯式地控制加載時間,而不取決於瀏覽器的http實現。 例如,您可以確保首先加載將要由用戶訪問的項目。

如果文件更大(比如說幾百千字節),則可以一個接一個地加載,這不會導致用戶帶寬不足。 與等待並行下載四個(通常的並發限制)一百千字節文件相比,這可以更快地獲得某種形式的結果。

您選擇的策略實際上取決於您要制定的策略,我認為最終對於這個論壇來說太含糊了。

要注意的另一件事是,在下載失敗的情況下,第二種方法不是很可靠。

第二種方法似乎更好。 如果要加載數百張圖像,則在第一種方法中,幾乎同時觸發所有圖像請求,從而使瀏覽器幾乎無法使用,並且由於並行請求,第一幅圖像的加載可能會花費更長的時間(然后將共享帶寬)比第二種方法。 但是總的加載時間(即圖像數量*加載單個圖像的平均時間)將以第一種方式減少。

最好的辦法是使用這些方法的混合體。 隨時加載MAX_NUMBER ,這意味着開始加載圖像,直到正在進行MAX_NUMBER的圖像加載操作為止。 並且,一旦加載操作完成,就開始加載新的。 以下是粗略的方法。 固定時間間隔可能為100毫秒后,需要調用loadimages MAX_NUMBER可以是20左右。

function loadimages(){
    while(count < MAX_NUMBER) {
        loader.load(images.shift);
        count++;
    }
}
onComplete() {count--;}
onFail(){count--;}
setIntarval(loadimages, 100);

主要取決於您的應用程序使用圖像的方式,即同時使用全部圖像,或者在任何給定時間點使用圖像的子集。

暫無
暫無

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

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