[ascoders] Re: Event Management
- From: "Andre Michelle" <am@xxxxxxxxxxxxxxxxxx>
- To: <ascoders@xxxxxxxxxxxxx>
- Date: Fri, 18 Apr 2003 19:10:13 +0200
hi holger,
> 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.
Nicht unbedingt. Ich meine, es sollte möglich sein,
ein Object an 2 verschiedenen Broadcaster anzumelden.
Witzigerweise wird aber ganz offiziell beim Versuch,
ein Objekt noch woanders anzumelden beim alten
Caster die Methode 'removeListener' ausgeführt ( trace mal... )
> 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.
Sieht nett aus, aber auch so ziemlich das Gleiche, will ich meinen.
Was mir am meisten Freude bereiten würde, ist den onEnterFrame
eines MovieClips vom MC selber abzumelden und über das
ASBroadcaster laufen zu lassen, sodass immer nur ein onEnterFrame
läuft. Aber es sieht so aus, als wären die Event 'hard gecoded',
also nicht überschreibbar...
gruss
aM
http://www.andre-michelle.com
> 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
> ------------------------------------------------------
>
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
- Follow-Ups:
- [ascoders] Re: Event Management
- From: bokel
- References:
- [ascoders] Event Management
- From: Andre Michelle
- [ascoders] Re: Event Management
- From: Holger Kohnen
Other related posts:
- » [ascoders] Event Management
- » [ascoders] Re: Event Management
- » [ascoders] Re: Event Management
- » [ascoders] Re: Event Management
- [ascoders] Re: Event Management
- From: bokel
- [ascoders] Event Management
- From: Andre Michelle
- [ascoders] Re: Event Management
- From: Holger Kohnen