flash-Ereignis-listener für movieclip-Ende?
Könnte jemand empfehlen, der beste Weg, um die trigger eine functiont, wenn ein movieclip-animation beendet ist?
Ich vermute ein eventlistener könnte damit umgehen, aber nicht sicher der beste Weg, um darüber zu gehen.
Dank
Paul
- der Umgang etwas ähnliches im moment. Die einfachste option ist die Verwendung eines Ereignis-listener für das ENTER_FRAME-Ereignis aus und überprüfen Sie, ob die currentframe ist das Letzte (z.B. Funktion checkLastFrame(event:event):void{ trace(currentFrame == totalFrames); } ), aber je nachdem, wie einfach oder Komplex, sind finden Sie vielleicht die folgenden Ressourcen nützlich: adobe.com/devnet/flash/articles/timelinewatcher.html , bytearray.org/?p=603 , tink.ws/blog/framelabelmovieclip-uiframelabelmovieclip
- Cheers für deine Hilfe, George
- Warum kann man nicht einfach ein Ereignis ausgelöst auf dem letzten Bild?
- Oder sogar ein Ereignis ausgelöst auf das Letzte Bild und hören Sie es an anderer Stelle.
- Ich komme aus einem as2-Winkel - also das auslösen eines Ereignisses vom letzten Bild war das erste, woran ich dachte, aber ich kann nicht herausfinden, wie man trigger eine Funktion in der Wurzel von einer dynamisch geladenen Film
- Ich habe mich oft gefragt, warum Flash nicht haben ein built-in-Ereignis für diese, wie für die videos, wenn Sie mit dem spielen fertig sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar Wege zu gehen über diese:
In Bezug auf Punkt 3, ich würde eine Basisklasse für Ihr Objekt. Auf diese Weise können Sie dieselbe Logik auf mehrere Elemente animiert.
Etwas wie dieses:
Nun können wir hören "animation_complete" und Sachen tun, entsprechend.
Es ist schon eine Weile her, ich spielte mit flash. Ich meistens tun, flex now, aber sollte diese Arbeit.
Mit dem enterFrame-Ereignis wäre eine riesige Verschwendung von Ressourcen, und erstellen Sie eine benutzerdefinierte event-Klasse ist nicht nötig.
Auf den letzten frame setzen diese
Und in Ihrem code auf Ihr "root"
Durch die Nutzung eines ENTER_FRAME listener, können Sie sagen, wenn ein MovieClip hat gelesen das beenden der Wiedergabe; Sie können dann einen Schritt weiter, indem er es in eine Wrapper-Klasse, die ausgeführt wird, Sie die überwachung für Sie:
Verwendung ist ziemlich geradlinig; der Aufruf von destroy() ist optional, Dank der schwachen Ereignis-listener; aber empfohlen, wenn Sie fertig sind 🙂
Ich glaube nicht, es ist eine Veranstaltung, die Sendung am Ende ein movieclip ist, können Sie immer ein Skript ausführen, auf dem letzten frame der animation ausführen, was Sie wollen. Wenn Sie wirklich wollen, um Ereignisse, die im letzten frame des Movieclips könnte ein Skript auszuführen, nutzt dispatchEvent() zum senden eines benutzerdefinierten sogar die abgeholt werden können.
Ich bin mir nicht sicher, von deinem post, wenn Sie Event-Handler vor, also hier ist ein tutorial auf, dass (ich bin nicht gut im erklären, sorry!):
http://edutechwiki.unige.ch/en/ActionScript_3_event_handling_tutorial
und für dispatchEvent():
http://www.actionscript.org/resources/articles/204/1/Using-EventDispatcher/Page1.html
Könnten Sie eine enterframe-listener, der prüft, um zu sehen, ob der movieclip den currentFrame == totalFrames, und wenn Sie gleich sind, versenden Sie ein benutzerdefiniertes Ereignis aus, dass Sie (wie TimelineComplete).
Andere option wäre eine kleine Komponente, löst Ihre benutzerdefinierten TimelineComplete Ereignis, und platzieren Sie diese Komponente auf dem letzten frame der animation, die Sie überwachen möchten. Dies würde ermöglichen es Ihnen, mehr Kreativität in die Zukunft und fügen Sie Dinge wie eine Verzögerung, bevor das Ereignis ausgelöst wird.
Haben Sie ein paar Optionen, von denen keines sind ideal meiner Meinung nach, aber Sie tun die Arbeit, und wenn gut gemacht, Sie werden nicht unhandlich. Das einzige, was ich nicht machen würde, ist fügen Sie ein wenig code, der auf dem letzten Bild. Das wird eher schwer zu verfolgen über die Zeit.
Können Sie erstellen eine benutzerdefinierte
MovieClip
Klasse löst ein Ereignis aus, wenn der MovieClip-Objekt ist auf dem letzten Bild. Sie können dann die benutzerdefiniertenMovieClip
Klasse der Basis-Klasse von der MovieClip-animation:CustomMovieClip.als:
TimelineEvent.als:
Main.als(Dokument-Klasse):
wenn man für die kürzeste Lösung, die ich denke, es wäre :
Nur überprüfen
currentFrame
undtotalFrames
ist nicht genug für ein MovieClip mehrere Szenen. Sie müssen auch überprüfen, wenn es an die Letzte Szene.