Flex FileReference.save() kann nur aufgerufen werden in ein Benutzer-Ereignis-handler — wie kann ich dies umgehen?

Muss ich anrufen FileReference.save () - nach einer web-service-Aufruf beendet wurde, aber diese Methode hat eine Einschränkung: "Im Flash Player, können Sie nur aufrufen, diese Methode erfolgreich in Reaktion auf ein Benutzerereignis (Z. B. in einer Ereignisprozedur für ein Mausklick-oder Tastendruckereignis). Andernfalls wird beim aufrufen dieser Methode in Flash Player ein Fehler zurückgegeben Ausnahme." (aus der Dokumentation hier)

Diese Einschränkung ist ein bisschen vage. Bedeutet es, dass ich nur zu rufen Sie die FileReference.save () - Methode innerhalb einer event-handler-Funktion registriert sich als listener für bestimmte Arten von user-events? Wenn ja, dann genau, welche user-events gültig sind? (Vielleicht gibt es ein Ereignis, das nie ausgelöst durch die Benutzerinteraktion mit meiner Anwendung, und ich könnte registrieren Sie einen Ereignis-handler-Funktionen das event-Typ und machen den save () - Aufruf innerhalb der Funktion?)

Mein Problem ist, dass ich nicht sicher rufen Sie die FileReference.save () - Methode, bis meine web-service gibt mit der Daten, die als das argument von der FileReference.save () - Methode aufrufen, damit der event ausgelöst wird die FileReference.save () - Aufruf ist eigentlich ein ResultEvent, anstatt eine Benutzer-Ereignis, und ich bin misstrauisch gegenüber der Einplanung eine neue (Fake -) user-event-Typ, um auslösen zu können die FileReference.save () - Aufruf, es sei denn, es ist auf jeden Fall eine Benutzer-Ereignis niemals ausgelöst werden, als Ergebnis der tatsächlichen Benutzer-Interaktion mit meiner Anwendung.

In einer nussschale, was ich jetzt mache ist Folgendes: ich habe eine Funktion, die registriert wird als handler für das klicken auf eine Schaltfläche. In dieser Funktion habe ich meine web-service-Aufruf zum abrufen von Daten vom server. Ich habe auch eine Ergebnis-handler-Funktion, die wird aufgerufen, wenn der web-service-Aufruf beendet ist, und es ist hier, dass ich möchten, rufen Sie die FileReference.save () - Methode, da es an dieser Stelle, dass ich weiß, dass die Daten bereit sind, um in einer Datei gespeichert werden. Aber die oben genannten Einschränkung ist die Sperrung mir aus tun-ich erhalte eine Fehlermeldung:

Error #2176: Certain actions, such as those that display a pop-up window, 
may only be invoked upon user interaction, for example by a mouse click 
or button press.

Ich habe viele Dinge versucht, dies zu umgehen, wie das anlegen eines zweiten Maus-Klick-event-handler-Funktion, mit der FileReference.save () - Aufruf innerhalb und nannte es nach einem timeout-Intervall (geben Sie die web-service-Zeit), aber ich immer wieder mit den gleichen Fehler-vielleicht, dass der Ansatz funktioniert nicht, weil die zweite Funktion ist nicht registriert, wie ein Ereignis-listener für das Ereignis verwendet wird, als argument.

Ich bin neu in der Flex-Entwicklung so vielleicht bin ich nur nicht über dieses denken in der richtigen Weise. Wenn jemand vorschlagen kann, eine weitere Ansatz, den ich würde es wirklich schätzen. Vielen Dank im Voraus für Ihre Kommentare und Anregungen.

--James

InformationsquelleAutor James Adams | 2010-07-21

Schreibe einen Kommentar