Ich habe ein bisschen eine harte Zeit, dieses herauszufinden.AS3 Event Listeners innerhalb der Schleife
Ich erstelle eine Air/Flash-App, die Dateien von einem lokalen Verzeichnis auf den Server hochlädt (ohne Benutzerinteraktion). Ich erstelle ein Array der Dateien im Ordner und kann sie ohne Probleme hochladen. Allerdings kann ich die Ereignis-Listener nicht verfolgen; Das bedeutet, dass die for-Schleife vor den Ereignis-Listenern für jeden Upload offensichtlich abgeschlossen wird.
Gibt es eine Möglichkeit, die Ereignislistener zu verfolgen und herauszufinden, wann die letzte beendet wurde?
Jede Hilfe wird sehr geschätzt ...
Hier ist mein Code:
public var UPLOAD_URL:String = "http://myhost/dev/uptest.php";
upbtn.addEventListener(MouseEvent.CLICK, uploadme);
public function uploadme(event:MouseEvent):void
{
preloader.visible = true;
var desktop:File = File.applicationStorageDirectory.resolvePath("photo");
var files:Array = desktop.getDirectoryListing();
for (var i:uint = 0; i < files.length; i++)
{
var date:Date = new Date(); // get new date
var mytime:Number = Math.round(date.valueOf()/1000);
var ur:URLRequest = new URLRequest();
var uv:URLVariables = new URLVariables();
uv.filename = files[i].name;
ur.data = uv;
ur.method = URLRequestMethod.POST;
ur.url = UPLOAD_URL;
files[i].addEventListener(ProgressEvent.PROGRESS, updateProgress);
files[i].addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, doneUpload);
files[i].addEventListener(IOErrorEvent.IO_ERROR, fileError);
files[i].upload(ur);
//trace(i)
function updateProgress(event:ProgressEvent):void
{
//wait preloader.visible = true;
//trace(event.currentTarget.name);
}
function doneUpload(event:DataEvent):void
{
//var loader2: URLLoader = URLLoader(event.target);
//trace(i);
trace(event.data);
//preloader.visible = false;
}
function fileError(event:IOErrorEvent):void
{
trace("error");
}
}
}
Sie müssen so bauen. Sie erstellen genügend Loader und verknüpfen sie mit einer Struktur, dann gehen Sie im 'doneUpload'-Listener zu dieser Struktur und markieren Sie' event.target' als fertig und überprüfen Sie die Struktur, wenn alle fertig sind. – Vesper
Ich bin nicht 100% klar, was Sie hier zu tun versuchen. Möchten Sie die Benutzeroberfläche so lange warten lassen, bis alle Dateien hochgeladen wurden? Nach dem Hochladen etwas für jede Datei tun? Etwas anderes? – Brian
Alles was ich versuche ist einen Preloader während des Hochladens anzuzeigen und zu deaktivieren, wenn die letzte Datei hochgeladen wurde. – cnapsys