2011-11-23 149 views
1

我有一個任意數量的圖像我想加載。我想加載它們,等到我爲每個事件獲取一個Event.INIT,然後才能繼續執行其餘的程序。AS3:等待多個加載器完成

我知道我可以通過Event.INIT監聽器更新來做到這一點,並檢查一些計數變量,但這是標準的方法嗎?有沒有更優雅或AS特定的方式?

回答

1

最好的方法是使用由Greensock(TweenMax的開發人員)開發的LoaderMax。

http://www.greensock.com/loadermax/

您可以創建一個裝載組,等待該組的完整事件。代碼記錄得非常好。

這裏是代碼的快速樣機來給你,你可以期望什麼樣的想法:

mediaLoader = new LoaderMax({ name:"mediaLoader" }); 
mediaLoader.addEventListener(LoaderEvent.PROGRESS, onMediaLoadProgress); 
mediaLoader.addEventListener(LoaderEvent.COMPLETE, onMediaLoadComplete); 
mediaLoader.addEventListener(LoaderEvent.ERROR, onMediaLoadError); 

for (var i:int = 0; i < 10; i++) 
{ 
    mediaLoader.append(LoaderMax.parse("image_" + i + ".jpg", { estimatedBytes: 100000 })); 
} 

它也給你的圖片,視頻,聲音等,您可以使用它們來專門裝載機您優點,或只是透明地對待它們。

+0

不錯,我不知道加載組。 – clevercloggs

2

你可以每裝載機存儲在數組中,並刪除他們時,他們派遣INIT

private function onInit(e:Event):void 
{ 
    var loader:Loader = (e.currentTarget as LoaderInfo).loader; 
    _loaders.splice(_loaders.indexOf(loader), 1); 
    if (_loaders.length == 0) 
    //do something 
} 

你也可以只使用一個計數變量如你所說。這是可以的,因爲加載器不會分發兩次INIT。但是您必須從陣列中移除加載器,或者減少錯誤事件的計數器。

+0

這是有道理的。無論如何,我認爲我需要將loader.content移動到Sprites中,在這種情況下,我應該首先擺脫裝載者。 – clevercloggs

0

沒有「標準方法」。 @ Kodiak說,你必須用自己的計數器來實現它。

但是如果您需要更復雜的東西,請看LoaderMax庫。您可以設置'maxConnections'參數來確定一次加載多少個東西。