2010-12-14 7 views
1

Flash Builder 4 (4.1 flex 포함) 사용. 내 기능이 끝나면 상태 변경을 만들려고하면 응용 프로그램을 닫을 수있는 "완료"버튼이 화면에 표시됩니다. 어플 리케이션에 이것을 어떻게 알릴 수 있습니까?
보호 된 함수 setState (newState : String) : AS3에서는 void이지만 flex에서는 작동하지 않습니다. 4. 파일 배열이 완료되면 상태가 Finished로 변경되어야합니다.완료 후 상태 변경

 private function initiate_download(event:MouseEvent):void 
     { 
      var filearray:Array = new Array(); 
      filearray[0]="00.jpg"; 
      filearray[1]="01.jpg"; 
      filearray[2]="02.jpg"; 
      for (var i:uint; i < filearray.length; i++) { 
       var remoteURL = "http://domain/" + filearray[i]; 
       var localURL = "C:/dir/" + filearray[i]; 
       downloadFile(remoteURL, localURL); 
      } 


      function downloadFile(url, filename) { 
       // Create the stream for the data request 
       var urlStream = new URLStream(); 

       // Used to initiate request for remote file 
       var request = new URLRequest(url); 

       // Create file stream 
       var fileStream = new FileStream(); 

       // Create a reference to a location on disk 
       var file = File.desktopDirectory.resolvePath(filename); 

       // Called as download progresses 
       var writeFile = function() 
       { 
        // Write to file 
        if (urlStream.bytesAvailable > 51200) 
        { 
         var dataBuffer = new ByteArray(); 
         urlStream.readBytes(dataBuffer, 0, urlStream.bytesAvailable); 
         fileStream.writeBytes(dataBuffer, 0, dataBuffer.length); 
        } 
        return true; 
       } 

       // Called when download completes 
       var finishWriteFile = function() 
       { 
        // Write to file 
        if(urlStream.bytesAvailable > 0) 
        { 
         var dataBuffer = new ByteArray(); 
         urlStream.readBytes(dataBuffer, 0, urlStream.bytesAvailable); 
         fileStream.writeBytes(dataBuffer, 0, dataBuffer.length); 
        } 

        // Close streams 
        fileStream.close(); 
        urlStream.close(); 

        return true; 
       } 

       // Initiate download 
       fileStream.openAsync(file, FileMode.WRITE); 
       urlStream.load(request); 

       // Add event listeners 
       urlStream.addEventListener(Event.COMPLETE, finishWriteFile); 
       urlStream.addEventListener(ProgressEvent.PROGRESS, writeFile); 
      } 
    ]]> 
</fx:Script> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 
<s:states> 
    <s:State name="Start"/> 
    <s:State name="Finished"/> 
</s:states> 
<mx:Image x="0" y="0" source="background.jpg"/> 
<s:Button x="85" y="85" includeIn="Start" label="Update" id="download" click="initiate_download(event)" color="#FFFFFF" fontSize="30"/> 
<s:Button x="131" y="85" includeIn="Finished" label="Finished" id="closer" click="close_window(event)" color="#FFFFFF" fontSize="30"/> 

답변

0

당신은 FILESTREAM을 닫은 후 및 URLStream과 당신은

this.currentState = "Finished" 

을하고 상태를 변경할 수 및 닫기 버튼이 표시되어야합니다.

+0

감사합니다. 정확하게 맞습니다! 스트림을 닫은 후 배치하면 배열의 맨 처음이 처리 된 후 변경됩니다. 대형 영화 파일로 테스트해야했습니다. 어레이의 끝 부분이 바뀔 때까지 기다려야합니다. – mubhcaeb