[ascoders] Re: Event Management
- From: "Holger Kohnen" <h_kohnen@xxxxxx>
- To: <ascoders@xxxxxxxxxxxxx>
- Date: Fri, 18 Apr 2003 18:19:40 +0200
Hi Andre,
auf jeden Fall sollte sich ein Objekt nur einmal anmelden können, denn
es würde einem einem Objekt nichts bringen doppelt angemldet zu sein,
ganz im Gegenteil es würden sogar Methoden ungewollt doppelt aufgerufen
werden.
Ich habe hier mal den MoviClip-Konstruktor um entsprechende Movie-
Clip-Events erweitert was ganz praktisch ist, da man dann nicht immer
einen MC als Event-Quelle benötigt.
netten Gruß, Holger
PS.: Eigentlich stehe ich ja nicht so auf große Brocken, hier aber
doch...;-)
<code>
initMovieClipBroadcasters = function () {
_level0.createEmptyMovieClip('mcEventSource', 1000000);
var arrBroadcaster =
['EnterFrame','MouseMove','MouseUp','MouseDown','KeyUp','KeyDown'];
for (var i = 0; i < arrBroadcaster.length; i++) {
var strBcName = 'bc' + arrBroadcaster[i];
var strEventName = 'on' + arrBroadcaster[i];
var objBroadcaster = MovieClip[strBcName] = new Object();
ASBroadcaster.initialize(objBroadcaster);
objBroadcaster.strEventName = strEventName;
objBroadcaster.$oldAddListener = objBroadcaster.addListener;
objBroadcaster.$oldRemoveListener = objBroadcaster.removeListener;
objBroadcaster.addListener = function (pObjListener) {
this.$oldAddListener(pObjListener);
var objBroadcaster = this;
var strEventName = this.strEventName;
_level0.mcEventSource[strEventName] = function () {
objBroadcaster.broadcastMessage(strEventName);
}
}
objBroadcaster.removeListener = function (pObjListener) {
this.$oldRemoveListener(pObjListener);
if (this._listeners.length == 0) {
_level0.mcEventSource[this.strEventName] = null;
}
}
}
}
initMovieClipBroadcasters();
delete initMovieClipBroadcasters;
// Example:
obj = new Object();
MovieClip.bcEnterFrame.addListener(obj);
MovieClip.bcMouseUp.addListener(obj);
MovieClip.bcEnterFrame.removeListener(obj);
obj.onEnterFrame = function () { trace('onEnterFrame'); }
obj.onMouseUp = function () { trace('onMouseUp'); }
</code>
> hi,
>
>
> ich möchte in Zukunft mit einem besseren Eventmodell
> arbeiten. Dazu habe ich hier zunächst mal einfach drauflos
> programmiert um zu sehen, wohin die Reise geht :o)
>
> http://www.andre-michelle.com/files/as/events.as
>
> Auf dem Weg sind mir einige Zweifel gekommen.
>
> Ist es richtig das man ein Objekt nur einmal als Listener anmelden kann ?
>
> Zur Zeit habe ich die addListener / removeListener Methoden erweitert,
> um eine Fallunterscheidung für MovieClips zu machen, denn die haben
> ja bekanntlich onEnterFrame, onMouseDown, onMouseUp, onMouseMove.
> Dennoch würde ich gerne die Events der MovieClips mit einbeziehen, also
> auch vom AS Broadcaster steuern lassen.
>
> Denn ASBroadcaster arbeitet ein Event fast 40% schneller ab,
> als wenn ich die Objekte in einer For in Schleife einzeln anspreche.
>
>
> Was macht ihr so ?
>
> .....gerade.....
>
>
> :o)
>
>
> aM
> http://www.andre-michelle.com
>
>
> ------------------------------------------------------
> Archiv : http://www.freelists.org/archives/ascoders/
> Optionen : http://www.freelists.org/list/ascoders
> ------------------------------------------------------
>
>
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
- Follow-Ups:
- [ascoders] Re: Event Management
- From: Andre Michelle
- References:
- [ascoders] Event Management
- From: Andre Michelle
Other related posts:
- » [ascoders] Event Management
- » [ascoders] Re: Event Management
- » [ascoders] Re: Event Management
- » [ascoders] Re: Event Management
- [ascoders] Re: Event Management
- From: Andre Michelle
- [ascoders] Event Management
- From: Andre Michelle