Ereignismodell und Rückrufe

Ziehen Sie die Verwendung einfacher Rückrufe anstelle des Ereignismodells in Betracht.

Das Ereignismodell von ActionScript 3.0 basiert auf dem Konzept der Objektauslösung. Das Ereignismodell ist objektorientiert und für die Wiederverwendung von Code optimiert. Die dispatchEvent() -Methode durchläuft die Liste der Listener in einer Schleife und ruft für jedes registrierte Objekt die Ereignisprozedurmethode auf. Das Ereignismodell hat jedoch den Nachteil, dass im Lauf der Zeit wahrscheinlich zahlreiche Objekte für die Anwendung erstellt werden.

Angenommen, Sie müssen ein Ereignis von der Zeitleiste auslösen, um das Ende einer Animationssequenz anzugeben. Für diese Benachrichtigung können Sie ein Ereignis von einem bestimmten Bild in der Zeitleiste auslösen, wie im folgenden Code gezeigt:

dispatchEvent( new Event ( Event.COMPLETE ) );

Die Document-Klasse kann mit der folgenden Codezeile auf dieses Ereignis warten:

addEventListener( Event.COMPLETE, onAnimationComplete );

Dieses Verfahren ist zwar korrekt, doch kann die Verwendung des nativen Ereignismodells mehr Ausführungszeit und Arbeitsspeicher erfordern als eine herkömmliche Rückruffunktion. Ereignisobjekte müssen erstellt und im Arbeitsspeicher zugewiesen werden, was sich negativ auf die Leistung auswirkt. So wird beispielsweise beim Warten auf das Event.ENTER_FRAME-Ereignis in jedem Bild ein neues Ereignisobjekt für die Ereignisprozedur erstellt. Die Leistung kann insbesondere bei Anzeigeobjekten leiden, da die Erfassungs- und Bubbling-Phasen bei einer komplexen Anzeigeliste sehr ressourcenintensiv sein können.