Verwenden von Flash Builder 4 (mit 4.1 flex). Versuchen, eine Statusänderung zu erstellen, nachdem meine Funktion ausgeführt wurde, die den Bildschirm ändern wird, um eine Schaltfläche "fertig" zu haben, die die Anwendung schließt. Wie kann ich der Luft-App sagen, dies zu tun?
Ich habe Folgendes gefunden: protected function setState (newState: String): void für AS3, funktioniert aber nicht auf flex 4. Es sollte den Status in Finished ändern, nachdem das Array von Dateien fertig ist.Status ändern nach Abschluss
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"/>
Danke, das stimmt genau! Wenn Sie es nach dem Strom schließen, nachdem das allererste Array verarbeitet wurde, ändert es sich. Ich musste es mit großen Filmdateien testen. Ich werde daran arbeiten, es zu warten, bis das Ende des Arrays sich ändert. – mubhcaeb