2013-04-25 70 views
0

請記住,我是一個NOOB。我不是要求任何人編寫我的整個項目,但我很容易在很多情況下輸掉。您的幫助和耐心是非常讚賞...使用For Each Loop下載文件

我的AS3代碼看起來是這樣的:

var totalFeatureImageDownloads:Number = 0; //total file size of all feature images, in bytes 
var totalFeatureImageDownloaded:Number = 0; //total downloaded of all feature images, in bytes 

for each(var featureimage:XML in xml.featureimages.imgurl) 
    { 
    trace(featureimage); 
    var featureImageRequest:URLRequest = new URLRequest(featureimage); 
    var featureImageLoader:URLLoader = new URLLoader(featureImageRequest); 
    totalFeatureImageDownloads = totalFeatureImageDownloads + featureImageLoader.bytesTotal; 
    trace(featureImageLoader.bytesTotal); 
    } 

目前,我有XML文件中的3張圖片,以及它們的URL的正確跟蹤。但是,bytesTotal總是等於0.另外,我知道這個循環創建了3個相同名稱的URLRequest和3個相同名稱的URLLoaders。我可能需要創建3個不同名稱的。

我想要同時下載所有的圖像,我需要計算所有三個組合的文件大小,以及下載狀態作爲分數(bytesLoaded/bytesTotal)。

我有這樣的多種情況,並堅持下去,直到我完成。非常感謝您的幫助。乾杯。

回答

0

無法從新創建的URLLoader中讀取bytesTotal,因爲客戶端需要首先連接到Web服務器以獲取要下載的文件的大小。您需要監聽由URLLoader發送的第一個ProgressEvent.PROGRESS事件,一旦發送該事件,bytesTotal屬性更可能是準確的。我說「更有可能」,因爲如果數據是在服務器上動態生成的,但是在從服務器上下載文件的一般情況下,無法獲得總文件大小。

我承認一般情況。有些庫可以幫助實現這一點,例如LoaderMax或BulkLoader。我個人使用BulkLoader:https://github.com/arthur-debert/BulkLoader