[ascoders] Re: AS2 Eventhandling

  • From: Ralf Siegel <ralf@xxxxxxxxxxx>
  • To: ascoders@xxxxxxxxxxxxx
  • Date: Fri, 12 Dec 2003 22:23:20 +0100


Danke erstmal!
Also ich kann in der Flashhilfe nichts über den EventDispatcher finden (hab
eben ein Update gemacht).
Aber danke, die Parameter haben mir echt gefehlt!

Suche mal nach 'dispatchEvent' - da sollten zwei Treffer kommen. Nicht?!


Verstehe ich das richtig, dass der EventDispatcher nur statische Methoden
und Eigenschaften hat?

ja.


Sämtliche Objekte melden sich also bei einer Klasse, aber eben für
unterschiedliche Events an?

genau.


Gibt's da was vergleichbares in Java?

AS2 orientiert sich laut Hilfe & EventDispatcher.as an der 'DOM Level 3 Events Specification' (-> mit OT: 'backdoor implementation' ;o)


http://www.w3.org/TR/DOM-Level-3-Events/
http://www.w3.org/TR/DOM-Level-2-Events/

Eine Implementation in Java findest du im org.w3c.dom.events Package:
http://java.sun.com/j2se/1.4.2/docs/guide/plugin/dom/org/w3c/dom/events/package-summary.html

Ansonsten gibt's für AWT:
http://java.sun.com/j2se/1.4.1/docs/api/java/awt/event/package-summary.html

(sorry, hab leider so schnell nichts besseres als die API-Docs gefunden)

"Provides interfaces and classes for dealing with different types of events fired by AWT components. See the java.awt.AWTEvent class for details on the AWT event model. Events are fired by event sources. An event listener registers with an event source to receive notifications about the events of a particular type. This package defines events and event listeners, as well as event listener adapters, which are convenience classes to make easier the process of writing event listeners."

Event/EventQueue/EventDispatcher:
http://java.sun.com/j2se/1.4.1/docs/api/java/awt/AWTEvent.html
http://java.sun.com/j2se/1.4.1/docs/api/java/awt/AWTEventMulticaster.html
http://java.sun.com/j2se/1.4.1/docs/api/java/awt/EventQueue.html

Ansonsten - Observer/Observable:
http://ag-kastens.uni-paderborn.de/lehre/material/oop/aufgaben/blatt9/Blatt9.html

Der AWT-EventDispatcher in Java läuft übrigens als separater Thread:
http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html

In ActionScript gibt's bekanntlich keine Threads, aber auch hier sammelt der EventDispatcher intern Empfänger für ein bestimmtes Ereignis in einer Warteschlange und arbeitet diese der Reihe nach ab: Schau mal in die Datei 'EventDispatcher.as' - der Name der Warteschlange (queueName) ergibt sich aus dem Namen des Ereignisses:

--------------------------------------------------------------------
C:\Programme\Macromedia\Flash MX 2004\en\First Run\Classes\mx\events
--------------------------------------------------------------------

        function addEventListener(event:String, handler):Void
        {
                var queueName:String = "__q_" + event;
                if (this[queueName] == undefined)
                {
                        this[queueName] = new Array();
                }
                _global.ASSetPropFlags(this, queueName,1);

EventDispatcher._removeEventListener(this[queueName], event, handler);
this[queueName].push(handler);
}


--------------------------------------------------------------------

Für den zweiten Ansatz (selbst basteln) wollte ich eigentlich gar keinen
ASBroadcaster verwenden...
Lohnt sich das selberbasteln, oder ist das langsamer?

Ich glaube André hatte vor einiger Zeit herausgefunden, dass AsBroadcaster schneller als ein eigener Zündsatz zündet.


Selbst basteln macht aber mehr Spass - besonders unter'm Weihnachtsbaum :o)

ralf ...



-------------------------------------------------------------
Ralf Siegel - Freelance Developer
Recommended Listening: Ms. John Soda - While Talking (Morr)
-------------------------------------------------------------


------------------------------------------------------ Archiv : //www.freelists.org/archives/ascoders/ Optionen : //www.freelists.org/list/ascoders ------------------------------------------------------

Other related posts: