2017-02-26 77 views
0

我有一個磁盤陣列和圖像的17個網絡鏈接保存一個功能多張圖片 - AS3 ADOBE AIR

 var products:Array; 
     trace(products) 

// Ouput : 
"http://www.myWebsite.com/zootopia.jpg" 
"http://www.myWebsite.com/james.jpg" 
"http://www.myWebsite.com/tom.jpg" 
    ..etc 

如果我做products[10].movieimage;輸出將是第9個鏈接(喜歡的東西:"http://www.myWebsite.com/lalaland.jpg"

我正在尋找下載沒有對話框的每個圖像。

我設法與特定鏈接1個圖像這樣做,這樣的:

function saveImage (event:Event):void { 

var stream:URLStream = new URLStream(); 
var image1:File = File.documentsDirectory.resolvePath("test.jpg"); 
var fileStream:FileStream = new FileStream(); 

stream.load(new URLRequest("http://www.myWebsite.com/lalaland.jpg")); 
stream.addEventListener(Event.COMPLETE, writeComplete); 
         

function writeComplete(evt:Event):void  { 
                var fileData:ByteArray = new ByteArray(); 
                stream.readBytes(fileData,0,stream.bytesAvailable); 
                fileStream.openAsync(image1, FileMode.UPDATE); 
                fileStream.writeBytes(fileData,0,fileData.length); 
                fileStream.close(); 
       trace("writeComplete"); 
       trace(image1.url); 
        } 
} 

問:是否有一種方法來下載所有與我products陣列的網絡鏈接的圖片?(如果已經存在的圖像,替換它們。我可以用if (image1.exists){if (image2.exists){ ...等爲每個圖像,但也許有一個simplier溶液)

如果你能告訴我怎麼樣,有一些代碼,我可以那。

另外請注意,我想,然後加載圖像Uiloader,像:

function loadImages():void { 
uiloader1.source = image1.url; 
uiloader2.source = image2.url; 
etc... 
    } 
+0

我覺得'For'循環可能會幫助您在多次迭代中執行**重複指令**(_ie:_圖片總數)。請參閱[** Adob​​e文章**](http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/loops.html)。當卡住並顯示錯誤代碼時詢問此處。 –

+0

Thx爲答案。我讀了這篇文章。它告訴我如何重複說明,但它不告訴我如何用不同的名稱保存每個圖像(如image1,然後是image2..etc)。因爲如果我做'while(products.movi​​eimage <18){saveImage(); },因爲它每次都會重複saveImage函數並替換我的''test.jpg'「文件。 – Steph

+0

只需創建一個'var num:int = 1;'然後當你做了IF語句時,你將num作爲函數變量'while(stuff <18){saveImage(num); }'然後在那個函數'saveImage'裏面,你說'filename =「image」+ String(num); num ++'其中'num ++'表示'num'的值在下次使用'{saveImage(num);'時增加+1。 }'...... –

回答

1

不要過度想。你有你的圖像陣列。你有你的測試例程保存一個圖像。現在把它放在一起:

  1. 某些函數初始化事物並將其踢開。
  2. 要麼拼接(或彈出)陣列上的項目 - 或使用索引var訪問陣列中的項目
  3. 將其傳遞到您的下載功能。
  4. 當下載完成時,從陣列中彈出另一項或增加索引。但首先你會測試是否array.length== 0或`index> array.length。如果兩者都是真的(取決於你使用哪種方法),那麼你就完成了。
  5. 如果您想要看中您可以顯示進度條並在每次下載完成時進行更新。
+0

我的數組包含18個鏈接。所以我可以在每個函數中編寫18個下載函數,爲保存的文件指定一個不同的名稱(image1,image2,image3 .... image18)。但它會很長,我認爲,編碼不好。我正在尋找一種方法來有1個功能,可以將包含網頁鏈接的數組的所有圖像保存爲18個不同的文件。如果你有一個示例代碼來分享(不完全是爲了這個項目,我明白他會花費你太多時間。但也許有人在我面前有同樣的問題?如果我有一些代碼,我會很高興。 – Steph

+1

@Steph - 不,你誤解了。把它想象成一排排在酒店前等待出租車的人。該行是你的**數組**。出租車是你的**下載程序**。酒店門衛檢查是否有人在線,如果有的話,他要求另一輛出租車...讓我的漂移。至於「給你一些代碼」 - 你不會這樣學習,是嗎? –

+0

Thx的解釋。我會盡力去做代碼,但是我會根據示例代碼來學習AS3。現在已經3年了,每次我在論壇或網站上看到示例代碼並學習這種方式。複製工作代碼,並閱讀它來學習。進行一些修改,看看發生了什麼,當我改變這個或那個。這是我學習的方式(從我改變的工作代碼開始)。 – Steph