Rheinwerk Design < openbook > Rheinwerk Design - Know-how für Kreative.
Know-how für Kreative

 << zurück
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/)
Objektorientierung und Codedesign mit Flash MX 2004
Buch: ActionScript 1 und 2

ActionScript 1 und 2
672 S., mit CD, Referenzkarte, 44,90 Euro
Rheinwerk Design
ISBN 3-89842-221-6
gp Kapitel 12 Ereignisse
  gp 12.1 Vor- und Nachteile
    gp 12.1.1 Vor- und Nachteile von Ereignisprozeduren
    gp 12.1.2 Vor- und Nachteile von Ereignismethoden
    gp 12.1.3 Vor- und Nachteile von Ereignismethoden in Flash 5
    gp 12.1.4 Vor- und Nachteile von Listener
  gp 12.2 Reihenfolge der Ereignisse
    gp 12.2.1 Bildbasierte Ereignisreihenfolge
    gp 12.2.2 Bildunabhängige Ereignisreihenfolge
    gp 12.2.3 updateAfterEvent
    gp 12.2.4 setInterval
    gp 12.2.5 initClip
    gp 12.2.6 _changed
  gp 12.3 Ereignisprozeduren
    gp 12.3.1 Fehlerquelle
    gp 12.3.2 on
    gp 12.3.3 onClipEvent
  gp 12.4 Ereignismethoden
    gp 12.4.1 allowDomain
    gp 12.4.2 allowInsecureDomain
    gp 12.4.3 onActivity
    gp 12.4.4 onChanged
    gp 12.4.5 onClose
    gp 12.4.6 onConnect
    gp 12.4.7 onData
    gp 12.4.8 onDragOut
    gp 12.4.9 onDragOver
    gp 12.4.10 onEnterFrame
    gp 12.4.11 onID3
    gp 12.4.12 onKeyDown
    gp 12.4.13 onKeyUp
    gp 12.4.14 onKillFocus
    gp 12.4.15 onLoad
    gp 12.4.16 onMouseDown
    gp 12.4.17 onMouseMove
    gp 12.4.18 onMouseUp
    gp 12.4.19 onPress
    gp 12.4.20 onRelease
    gp 12.4.21 onReleaseOutside
    gp 12.4.22 onRollOut
    gp 12.4.23 onRollOver
    gp 12.4.24 onScroller
    gp 12.4.25 onSelect
    gp 12.4.26 onSetFocus
    gp 12.4.27 onSoundComplete
    gp 12.4.28 onStatus
    gp 12.4.29 onSync
    gp 12.4.30 onUnload
    gp 12.4.31 onUpdate
    gp 12.4.32 onXML
  gp 12.5 Listener
    gp 12.5.1 Listener simulieren
    gp 12.5.2 AsBroadcaster
    gp 12.5.3 onChanged
    gp 12.5.4 onKeyDown
    gp 12.5.5 onKeyUp
    gp 12.5.6 onMouseDown
    gp 12.5.7 onMouseMove
    gp 12.5.8 onMouseUp
    gp 12.5.9 onMouseWheel
    gp 12.5.10 onResize (Stage)
    gp 12.5.11 onScroller(target)
    gp 12.5.12 onSetFocus (Selection)


Rheinwerk Design - Zum Seitenanfang

12.5 Listener  downtop

In der Tabelle »Listener und unterstützte Flash-Version« auf Seite 326 finden Sie alle von Flash unterstützten »Listener« und die zugehörigen Objekte. Die Anwendung unterscheidet sich nur wenig von den Ereignismethoden. Sollte Ihr Programm auf eines der Ereignisse reagieren, dann reicht es aus, wenn Sie dafür ein beliebiges Objekt mit einer Listener-Methode erstellen. Dabei ist es völlig unerheblich, um was für eine Art Objekt es sich handelt und ob dieses Objekt eventuell eine gleichnamige Ereignismethode bereits kennt oder nicht:

meinObjekt = new Object();
addListener.fla
meinObjekt.onMouseDown = function() {
   trace("Maus gedrückt!");
};
addListener

Im nächsten Schritt melden Sie das Objekt durch die Methode addListener als Zuhörer bei dem zugehörigen Objekt an:

Mouse.addListener(meinObjekt);

Natürlich darf ein Objekt wieder von der Liste der Zuhörer gestrichen werden. Dafür verwenden Sie die Methode removeListener mit dem zu entfernenden Objekt als Parameter. Die Methode gibt bei erfolgreicher Durchführung true und sonst false zurück.

meinObjekt = new Object();
removeListener.fla
meinObjekt.onMouseDown = function() {
   trace("Maus gedrückt!");
};
// Füge Listener hinzu
Mouse.addListener(meinObjekt);
// Entferne Listener
erfolgreich = Mouse.removeListener(meinObjekt);
trace(erfolgreich);
An mehreren Stellen als Listener

Um ein Objekt an mehreren Stellen als Listener zu verwenden, melden Sie es bei allen beteiligten Objekten an. Die erforderlichen Methoden weisen Sie dem Objekt wie normale Methoden zu:

meinObjekt = new Object();
mehrere Listenermethoden.fla
meinObjekt.onMouseDown = function() {
   trace("Maus gedrückt!");
};
meinObjekt.onMouseUp = function() {
   trace("Maus losgelassen!");
};
meinObjekt.onKeyDown = function() {
   trace("Taste gedrückt!");
};
meinObjekt.onKeyUp = function() {
   trace("Taste losgelassen!");
};
Mouse.addListener(meinObjekt);
Key.addListener(meinObjekt);

Tabelle 12.8   Listener und unterstützte Flash-Version

Listener Stage Selection Key Mouse MovieClipLoader Textfield
onChanged           6
onKeyDown     6      
onKeyUp     6      
onLoadComplete         7  
onLoadError         7  
onLoadInit         7  
onLoadProgress         7  
onLoadStart         7  
onMouseDown       6    
onMouseMove       6    
onMouseUp       6    
onMouseWheel       7    
onResize 6          
onScroller           6
onSetFocus   6        


Rheinwerk Design - Zum Seitenanfang

12.5.1 Listener simulieren  downtop

Ein selbst programmiertes Objekt mit Listener-Unterstützung verbessert das Verständnis für diese Technik. Denn grundsätzlich ist die Arbeitsweise ganz einfach.

Angenommen Sie haben eine Freundin, die gerne tratscht, dann erzeugen Sie in Flash zum Beispiel das folgende Objekt:

meineFreundin = new Object();
selsterstellter Listener.fla

Damit die Freundin den Tratsch effektiv an alle Interessenten verteilt, benötigt sie eine Liste mit den Zuhörern – also den Kern jedes Objektes, das Listener versteht:

// Erstelle Eigenschaft, die alle Zuhörer als Liste verwaltet
meineFreundin._listeners = new Array();
// Definiere Methode zum Hinzufügen von Zuhörern
meineFreundin.addListener = function(obj) {
   this._listeners.push(obj);
};
broadcasting

Jetzt benötigt unsere Freundin nur noch die Fähigkeit, Nachrichten an alle Interessenten zu verteilen (broadcasting):

// Verteile Nachrichten an alle Interessenten
meineFreundin.broadcastMessage = function(msg, parameter) {
   for (var i in this._listeners) {
   this._listeners[i][msg](parameter);
   }
};

Jetzt ist die Freundin auf Zuhörer vorbereitet, sofern das passende Ereignis eintritt. In diesem Fall ist der Auslöser, dass sie eine neue Nachricht erhält:

// Auslöser
meineFreundin.erzaehleNeuigkeit = function(neuigkeit) {
   this.broadcastMessage("onTratsch", neuigkeit);
};

Alle Objekte, die sich wie im Folgenden bei der Freundin als Interessent anmelden, erhalten ab jetzt die Nachricht onTratsch:

// Definiere Zuhörer
eineBekannte = new Object();
eineBekannte.onTratsch = function(neuigkeit) {
   trace(neuigkeit);
};
meineFreundin.addListener(eineBekannte);

Zum Testen des selbst programmierten Listeners rufen Sie die Methode meineFreundin.erzaehleNeuigkeit("Frank hat eine neue Freundin!"); auf, die zum Verteilen der Neuigkeiten bei allen angemeldeten Listenern führt.

Anhand dieses Beispiels erkennen Sie, dass bei Listenern im Wesentlichen nichts anderes passiert als die Verwaltung einer Liste mit Objekten, die vordefinierte Ereignismethoden besitzen, die in einer Schleife aufgerufen werden.


Rheinwerk Design - Zum Seitenanfang

12.5.2 AsBroadcaster  downtop

Sollten die vordefinierten Listener nicht ausreichen und Ihnen die Simulation von Listenern zu aufwändig sein, bietet Flash glücklicherweise seit Version 6 die undokumentierte Klasse AsBroadcaster. Diese Anweisung erzeugt den notwendigen Code für selbst definierte Listener automatisch:

meineFreundin = new Object();
// Selbst erstellte Listener-Verwaltung
AsBroadcaster.initialize(meineFreundin);
// Auslöser
meineFreundin.erzaehleNeuigkeit = function(neuigkeit) {
   this.broadcastMessage("onTratsch", neuigkeit);
};
// Definiere Zuhörer
eineBekannte = new Object();
eineBekannte.onTratsch = function(neuigkeit) {
   trace(neuigkeit);
};
meineFreundin.addListener(eineBekannte);
// Teste Listener
meineFreundin.erzaehleNeuigkeit(
 "Frank hat eine neue Freundin!");
onEnterFrame für Nicht-Movieclips

Häufig wird das Ereignis onEnterFrame auch für Nicht-Movieclips gewünscht. Mit Hilfe des AsBroadcasters ist es nun möglich, zumindest einen entsprechenden Listener zu erzeugen:

onEnterFrame.fla
// Erweitere Movieclip-Objekt für Listener
AsBroadcaster.initialize(MovieClip);
// Erzeuge Instanz für das Broadcasting
this.createEmptyMovieClip("mcBroadcaster", -Math.pow(2,31));
trace(mcBroadcaster.getDepth());
this.mcBroadcaster.onEnterFrame = function() {
   MovieClip.broadcastMessage("onEnterFrame");
};
// Erzeuge beliebiges Objekt als Listener
myObject = new Object();
// Erzeuge Listener-Methode
myObject.onEnterFrame = function() {
   trace("Bildwechsel");
};
// Melde Listener bei MovieClip an
MovieClip.addListener(myObject);

Rheinwerk Design - Zum Seitenanfang

12.5.3 onChanged  downtop

Das Ereignis onChanged wird immer dann ausgelöst, wenn sich der Inhalt eines Textfeldes verändert. Dies können Sie zum Beispiel für die Überprüfung einer Formulareingabe verwenden (siehe TextField, Seite 653).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für Textfield-Instanzen zur Verfügung.
       
gp  Syntax:
textfieldInstanz.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onChanged besitzt.
       
gp  Beispiel:
meinObjekt = new Object();
meinObject.onChanged=function () {
   trace("meinTextfeld wurde verändert!");
}
meinTextfeld.addListener(meinObjekt);

Rheinwerk Design - Zum Seitenanfang

12.5.4 onKeyDown  downtop

Das Ereignis onKeyDown wird immer dann ausgelöst, wenn der Anwender eine Taste drückt (siehe Key, Seite 621).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für das globale Key-Objekt zur Verfügung.
       
gp  Syntax:
Key.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onKeyDown besitzt.
       
gp  Beispiel:
onKeyDown (Listener).fla
x = 0;
y = 0;
stepx = 5;
stepy = 0;
this.lineStyle(5, 0x66FF66, 100);
this.onEnterFrame = function() {
   x = x+stepx;
   y = y+stepy;
   this.lineTo(x, y);
};
this.onKeyDown = function() {
   switch (Key.getCode()) {
   case Key.DOWN :
      stepx = 0;
      stepy = 5;
      break;
   case Key.UP :
      stepx = 0;
      stepy = -5;
      break;
   case Key.LEFT :
      stepx = -5;
      stepy = 0;
      break;
   case Key.RIGHT :
      stepx = 5;
      stepy = 0;
      break;
   }
};
Key.addListener(this);

Rheinwerk Design - Zum Seitenanfang

12.5.5 onKeyUp  downtop

Das Ereignis onKeyUp wird immer dann ausgelöst, wenn der Anwender eine Taste loslässt (siehe Key, Seite 621).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für das globale Key-Objekt zur Verfügung.
       
gp  Syntax:
Key.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onKeyUp besitzt.
       
gp  Beispiel:
x = 0;
onKeyUp (Listener).fla
y = 0;
this.lineStyle(5, 0x66FF66, 100);
this.onEnterFrame = function() {
   x = x+stepx;
   y = y+stepy;
   this.lineTo(x, y);
};
this.onKeyDown = function() {
   switch (Key.getCode()) {
   case Key.DOWN :
      stepx = 0;
      stepy = 5;
      break;
   case Key.UP :
      stepx = 0;
      stepy = -5;
      break;
   case Key.LEFT :
      stepx = -5;
      stepy = 0;
      break;
   case Key.RIGHT :
      stepx = 5;
      stepy = 0;
      break;
   }
};
this.onKeyUp = function() {
   stepx = 0;
   stepy = 0;
};
Key.addListener(this);

Rheinwerk Design - Zum Seitenanfang

12.5.6 onMouseDown  downtop

Das Ereignis onMouseDown wird immer dann ausgelöst, wenn der Anwender die Maustaste drückt (siehe Mouse, Seite 625).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für das globale Mouse-Objekt zur Verfügung.
       
gp  Syntax:
Mouse.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onMouseDown besitzt.
       
gp  Beispiel:
meinObjekt = new Object();
onMouseDown (Listener).fla
meinObjekt.onMouseDown = function() {
   trace("Maus gedrückt!");
};
Mouse.addListener(meinObjekt);

Rheinwerk Design - Zum Seitenanfang

12.5.7 onMouseMove  downtop

Das Ereignis onMouseMove wird immer dann ausgelöst, wenn der Anwender die Maus bewegt (siehe Mouse, Seite 625).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für das globale Mouse-Objekt zur Verfügung.
       
gp  Syntax:
Mouse.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onMouseMove besitzt.
       
gp  Beispiel:
meinObjekt = new Object();
onMouseMove (Listener).fla
meinObjekt.onMouseMove = function() {
   trace("Maus bewegt!");
};
Mouse.addListener(meinObjekt);

Rheinwerk Design - Zum Seitenanfang

12.5.8 onMouseUp  downtop

Das Ereignis onMouseUp wird immer dann ausgelöst, wenn der Anwender die Maustaste loslässt (siehe Mouse, Seite 625).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für das globale Mouse-Objekt zur Verfügung.
       
gp  Syntax:
Mouse.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onMouseUp besitzt.
       
gp  Beispiel:
meinObjekt = new Object();
onMouseUp (Listener).fla
meinObjekt.onMouseUp = function() {
   trace("Maus losgelassen!");
};
Mouse.addListener(meinObjekt);

Rheinwerk Design - Zum Seitenanfang

12.5.9 onMouseWheel  downtop

Das Ereignis onMouseUp wird immer dann ausgelöst, wenn der Anwender das Mausrad betätigt (siehe Mouse, Seite 625).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 7 für das globale Mouse-Objekt zur Verfügung).
       
gp  Syntax:
Mouse.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onMouseWheel besitzt, die als ersten Parameter die Stärke der Drehung (-3 bis -1 für abwärts, 1 bis 3 für aufwärts) und als zweiten Parameter das unter dem Mauszeiger liegende Objekt erhält.
       
gp  Beispiel:
meinObjekt = new Object();
meinObjekt.onMouseWheel = function(delta, ziel) {
   trace("Mausrad auf " + String(ziel) "gerollt!");
   trace("Rollgeschwindigkeit ist " + String(delta));
};
Mouse.addListener(meinObjekt);

Rheinwerk Design - Zum Seitenanfang

12.5.10 onResize (Stage)  downtop

Das Ereignis onResize wird immer dann ausgelöst, wenn sich die Größe der Bühne zur Laufzeit verändert. Dies können Sie zum Beispiel für die Positionierung von Elementen verwenden (siehe Stage, Seite 633).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für das globale Stage-Objekt zur Verfügung.
       
    Dieser Listener funktioniert nur, wenn die Bühne nicht skaliert wird, da sich in diesem Fall nicht die Größe in Pixel, sondern nur die Skalierung verändert.
       
gp  Syntax:
Stage.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onResize besitzt.
       
gp  Beispiel:
Stage.scaleMode = "noScale";
onResize (Listener).fla
meinObjekt = new Object();
meinObjekt.onResize = function() {
   trace("Bühnengröße verändert!");
};
Stage.addListener(meinObjekt);

Rheinwerk Design - Zum Seitenanfang

12.5.11 onScroller(target)  downtop

Das Ereignis onScroller wird immer dann ausgelöst, wenn sich der Inhalt eines Textfeldes verändert. Dies können Sie zum Beispiel für die Überprüfung einer Formulareingabe verwenden (siehe Textfield, Seite 653).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für Textfield-Instanzen zur Verfügung.
       
gp  Syntax:
textfieldInstanz.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onScroller besitzt.
       
gp  Beispiel:
meinObjekt = new Object();
onScroller (Listener).fla
meinObjekt.onScroller = function() {
   trace("Der Inhalt des Textfeldes wurde bewegt.");
};
meinTextfeld.addListener(meinObjekt);
// oder mit Parameter
meinObjekt = new Object();
meinObjekt.onScroller = function(target) {
   trace("Der Inhalt des Textfeldes " + target + " wurde bewegt.");
};
meinTextfeld.addListener(meinObjekt);

Rheinwerk Design - Zum Seitenanfang

12.5.12 onSetFocus (Selection)  toptop

Das Ereignis onSetFocus wird immer dann ausgelöst, wenn der Fokus verändert wird. Dies können Sie zum Beispiel für die Steuerung von Benutzereingaben in Formularen verwenden (siehe Selection, Seite 631).

gp  Bemerkung:
    Diese Listener-Methode steht seit dem Flash Player 6 für das globale Selection-Objekt zur Verfügung.
       
gp  Syntax:
Selection.addListener(beliebigeInstanz);
gp  Parameter:
    beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onSetFocus besitzt. Diese Methode erhält als ersten Parameter eine Referenz auf das Objekt mit dem vorherigen Fokus und als zweiten Parameter eine Referenz auf das Objekt mit dem neuen Fokus.
       
gp  Beispiel:
meinObjekt = new
onSetFocus (Listener).fla
meinObjekt.onSetFocus = function(alterFokus, neuerFokus) {
   trace("Textfeld "+neuerFokus+" hat den Fokus von
    "+alterFokus+" erhalten!");
};
Selection.addListener(meinObjekt);
 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: ActionScript 1 und 2
ActionScript 1 und 2
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern