Ich liebe das AS3 Event-Modell - es hilft, meinen Code sauber und losgelöst zu halten. Als ich früher an AS2-Projekten arbeitete, war mein Code nicht so ordentlich und die Klassen waren mehr voneinander abhängig. Aufgrund der seltsamen Handhabung von AS2 ist mir das AS2-Event-System nie wirklich gelungen.
Da ich gelegentlich noch in AS2 arbeiten muss, ist meine Frage:
Hat es jemand geschafft, die AS3-Ereignis-API in AS2 zu simulieren, und wenn nicht, was ist die beste Vorgehensweise für das Abhören und Verteilen von Ereignissen und den Umgang mit dem Umfang?
Es ist eigentlich ganz einfach, das zu tun. Ein paar Klassen sollten dich in Schwung bringen. Die erste ist eine Klasse Event
, wie folgt:
Dann verwende ich zwei andere Basisklassen. Eine für reguläre Objekte und eine für Objekte, die MovieClip
erweitern müssen. Zuerst die nicht MovieClip
version ...
Weiter die MovieClip
version ...
Erweitern Sie einfach Ihre Objekte mit Dispatcher oder DispatcherMC, und Sie können Ereignisse ähnlich wie AS3 versenden und auf Ereignisse warten. Es gibt nur ein paar Macken. Wenn Sie beispielsweise dispatchEvent()
aufrufen, müssen Sie einen Verweis auf das Objekt übergeben, das das Ereignis absetzt, normalerweise indem Sie einfach auf die this
-Eigenschaft des Objekts verweisen.
Die andere Laune ist, wenn Sie auf dieses Ereignis hören wollen. In AS2 müssen Sie Delegate.create()
verwenden, um den richtigen Umfang der Ereignisbehandlungsfunktion zu erhalten. Zum Beispiel:
Hoffentlich habe ich alles richtig aus meinen alten Dateien kopiert und eingefügt! Hoffe, das funktioniert für dich.
Ich würde sagen, dass die beste Methode wäre, die EventDispatcher-Klasse wo immer möglich zu verwenden. Sie können darüber lesen: Ссылка
Die UI-Komponenten haben auch sehr AS3-ähnliche Ereignis-Dispatching.
Ich habe ein paar Klassen geschrieben, die sich mit Ereignissen in AS2 beschäftigen. Sie können sie hier herunterladen.
Tags und Links flash actionscript-3 actionscript-2