2017-02-26 9 views
0

나는 이미지의 17 개 웹 링크 배열을 가지고저장 여러 이미지 - AS3 어도비 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;을 할 경우 출력이 (같은 : "http://www.myWebsite.com/lalaland.jpg") 9 링크 될 것입니다

대화 상자가없는 모든 이미지를 다운로드하려고합니다.

그와 같은 특정 링크 한 이미지를 그렇게 관리 :

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){ .. 등을 사용할 수 있습니다. 그러나 어쩌면 더 간단 솔루션이)

당신이 나를 보여줄 수 있다면 방법, 코드의 비트와 함께, 내가 할 수는 그. 또한

, 나는 그런 식으로, Uiloader에서 다음 이미지를로드하고 싶습니다 참고 :

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

여러 For 반복문 (_ie : _ 이미지 합계)에 대해 ** 반복 지시 **를하는 데 도움이 될 것이라고 생각합니다. 이 [** Adobe 문서 **] (http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/loops.html)를 참조하십시오. 멈추었을 때 여기에 물어보고 오류가있는 문제 코드를 표시하십시오. 대답은 –

+0

Thx입니다. 나는 그 기사를 읽었다. 지시를 실제로 반복하는 방법을 알려주지 만 이미지마다 다른 이름 (예 : image1, image2..etc)을 저장하는 방법을 알려주지 않습니다. 왜냐하면 내가 'while (products.movieimage <18) {saveImage(); }'그것은 saveImage 함수를 매번 반복하고 my "test.jpg"파일을 대체하기 때문입니다. – Steph

+0

그냥'var num : int = 1;'을 만들고 나서 IF 문을 쓸 때 num을 함수 변수'while (stuff <18) {saveImage (num); }'그 함수 안에서'saveImage'라고 말하면'filename = "image"+ String (num); num ++ ++'num ++ '를 쓰는 것은'{saveImage (num); }'... –

답변

1

이 이상을 생각하지 마십시오. 이미지 배열이 있습니다. 하나의 이미지를 저장하는 테스트 된 루틴이 있습니다. 이제 함께 사용하십시오 :

  1. 일부 기능은 사물을 초기화하고 시작합니다.
  2. 배열의 항목을 스플 라이스 아웃 (또는 팝 아웃)하십시오. 또는 var 색인을 사용하여 배열의 항목에 액세스하십시오.
  3. 다운로드 기능에 전달하십시오.
  4. 다운로드가 완료되면 배열에서 다른 항목을 팝하거나 색인을 증가시킵니다. 그러나 먼저 array.length== 0 OR`index> array.length인지 테스트 할 것입니다. 어느 것이 든 (당신이 사용하는 방법에 따라) 참이면, 당신은 끝난 것입니다.
  5. 마음에 드는 사람이라면 진행률 표시 줄을 보여주고 다운로드가 완료 될 때마다 업데이트 할 수 있습니다.
+0

내 배열에 18 개의 링크가 있습니다. 따라서 각 함수에서 save (image1, image2, image3 .... image18) 파일에 대해 18 개의 다운로드 함수를 작성할 수있었습니다. 그러나 그것은 매우 길어 질 것입니다, 나는 생각합니다. 나쁜 코딩입니다. 나는 18 가지 파일로 웹 링크를 포함하는 배열의 모든 이미지를 저장할 수있는 1 가지 기능을 갖는 방법을 찾고 있습니다. 공유 할 샘플 코드가있는 경우 (이 프로젝트와 정확히 일치하지는 않습니다.하지만 어쩌면 누군가 나 전에 같은 질문을 했을까 ?? 내가 어떤 코드를 쓸 수 있다면 나는 감격 할 것이다. – Steph

+1

@ 스 테프 - 아니, 오해. 호텔 앞에서 택시를 기다리는 사람들의 줄이나 줄과 같이 생각하십시오. 그 줄은 ** 배열 **입니다. 택시는 ** 다운로드 루틴 **입니다. 호텔 도어맨은 라인에있는 사람이 있는지 확인하고,있을 경우 다른 택시를 요구합니다 ... 내 표류를 얻으십시오. "당신에게 약간의 코드"를주는 것에 대해서 - 당신은 그런 식으로 배우지 않을 것입니다, 그렇죠? 설명을 위해 –

+0

Thx. 코드를 작성하려고하지만 샘플 코드를 기반으로 AS3을 배웁니다. 3 년이 지났습니다. 포럼이나 웹 사이트에서 샘플 코드를 작성하고이 방법을 배울 때마다 왔습니다. 작업 코드를 복사하고 읽으십시오. 약간 수정하고 내가 이것을 바꿀 때 어떤 일이 일어나는지 보아라. 그것은 배우는 나의 방법입니다 (내가 바꾼 작업 코드에서 나옵니다). – Steph