Know-how für Kreative

Inhaltsverzeichnis
1 Erste Schritte
2 Versionen
3 Einführung in die Programmierung
4 Die Entwicklungsumgebung
5 Regeln
6 Anweisungen und Aktionen
7 Werte und Datentypen
8 Ausdrücke und Operatoren
9 Funktionen
10 Kontrollstrukturen
11 Dokumenten-Objektmodell und Gültigkeitsbereich (Scope)
12 Ereignisse
13 Objekterstellung
14 Vererbung
15 Movieclips
16 ActionScript 2.0
17 Komponenten
18 Codedesign und Konzeption
19 Flashdetection
20 Aussergewoehnliche Benutzerfuehrung
21 D mit Flash
22 Macromedia Central
23 HTML
24 JavaScript, ActiveX und Java
25 Flash undokumentiert
26 Vergangenheit, Gegenwart und Zukunft
27 Kurzreferenz
28 Buchtipps
29 Links
30 Die CD-ROM zum Buch
Index
Download: - ZIP, ca. 9,8 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Design / <openbook> / ActionScript | vor >>
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/) Objektorientierung und Codedesign mit Flash MX 2004
ActionScript 1 und 2 672 S., mit CD, Referenzkarte, 44,90 Euro Galileo Design ISBN 3-89842-221-6 |
| Kapitel 12 Ereignisse
|  | 12.1 Vor- und Nachteile
|  |  | 12.1.1 Vor- und Nachteile von Ereignisprozeduren
|  |  | 12.1.2 Vor- und Nachteile von Ereignismethoden
|  |  | 12.1.3 Vor- und Nachteile von Ereignismethoden in Flash 5
|  |  | 12.1.4 Vor- und Nachteile von Listener
|  | 12.2 Reihenfolge der Ereignisse
|  |  | 12.2.1 Bildbasierte Ereignisreihenfolge
|  |  | 12.2.2 Bildunabhängige Ereignisreihenfolge
|  |  | 12.2.3 updateAfterEvent
|  |  | 12.2.4 setInterval
|  |  | 12.2.5 initClip
|  |  | 12.2.6 _changed
|  | 12.3 Ereignisprozeduren
|  |  | 12.3.1 Fehlerquelle
|  |  | 12.3.2 on
|  |  | 12.3.3 onClipEvent
|  | 12.4 Ereignismethoden
|  |  | 12.4.1 allowDomain
|  |  | 12.4.2 allowInsecureDomain
|  |  | 12.4.3 onActivity
|  |  | 12.4.4 onChanged
|  |  | 12.4.5 onClose
|  |  | 12.4.6 onConnect
|  |  | 12.4.7 onData
|  |  | 12.4.8 onDragOut
|  |  | 12.4.9 onDragOver
|  |  | 12.4.10 onEnterFrame
|  |  | 12.4.11 onID3
|  |  | 12.4.12 onKeyDown
|  |  | 12.4.13 onKeyUp
|  |  | 12.4.14 onKillFocus
|  |  | 12.4.15 onLoad
|  |  | 12.4.16 onMouseDown
|  |  | 12.4.17 onMouseMove
|  |  | 12.4.18 onMouseUp
|  |  | 12.4.19 onPress
|  |  | 12.4.20 onRelease
|  |  | 12.4.21 onReleaseOutside
|  |  | 12.4.22 onRollOut
|  |  | 12.4.23 onRollOver
|  |  | 12.4.24 onScroller
|  |  | 12.4.25 onSelect
|  |  | 12.4.26 onSetFocus
|  |  | 12.4.27 onSoundComplete
|  |  | 12.4.28 onStatus
|  |  | 12.4.29 onSync
|  |  | 12.4.30 onUnload
|  |  | 12.4.31 onUpdate
|  |  | 12.4.32 onXML
|  | 12.5 Listener
|  |  | 12.5.1 Listener simulieren
|  |  | 12.5.2 AsBroadcaster
|  |  | 12.5.3 onChanged
|  |  | 12.5.4 onKeyDown
|  |  | 12.5.5 onKeyUp
|  |  | 12.5.6 onMouseDown
|  |  | 12.5.7 onMouseMove
|  |  | 12.5.8 onMouseUp
|  |  | 12.5.9 onMouseWheel
|  |  | 12.5.10 onResize (Stage)
|  |  | 12.5.11 onScroller(target)
|  |  | 12.5.12 onSetFocus (Selection)
## 12.5 Listener 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 |  |  |  |
### 12.5.1 Listener simulieren 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. ### 12.5.2 AsBroadcaster 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);
### 12.5.3 onChanged 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).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für Textfield-Instanzen zur Verfügung.
| Syntax:
>     textfieldInstanz.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onChanged besitzt.
| Beispiel:
>     meinObjekt = new Object();
>     meinObject.onChanged=function () {
>        trace("meinTextfeld wurde verändert!");
>     }
>     meinTextfeld.addListener(meinObjekt);
### 12.5.4 onKeyDown Das Ereignis onKeyDown wird immer dann ausgelöst, wenn der Anwender eine Taste drückt (siehe Key, Seite 621).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für das globale Key-Objekt zur Verfügung.
| Syntax:
>     Key.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onKeyDown besitzt.
| 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);
### 12.5.5 onKeyUp Das Ereignis onKeyUp wird immer dann ausgelöst, wenn der Anwender eine Taste loslässt (siehe Key, Seite 621).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für das globale Key-Objekt zur Verfügung.
| Syntax:
>     Key.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onKeyUp besitzt.
| 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);
### 12.5.6 onMouseDown Das Ereignis onMouseDown wird immer dann ausgelöst, wenn der Anwender die Maustaste drückt (siehe Mouse, Seite 625).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für das globale Mouse-Objekt zur Verfügung.
| Syntax:
>     Mouse.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onMouseDown besitzt.
| Beispiel:
>     meinObjekt = new Object();
> ##### onMouseDown (Listener).fla
>     meinObjekt.onMouseDown = function() {
>        trace("Maus gedrückt!");
>     };
>     Mouse.addListener(meinObjekt);
### 12.5.7 onMouseMove Das Ereignis onMouseMove wird immer dann ausgelöst, wenn der Anwender die Maus bewegt (siehe Mouse, Seite 625).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für das globale Mouse-Objekt zur Verfügung.
| Syntax:
>     Mouse.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onMouseMove besitzt.
| Beispiel:
>     meinObjekt = new Object();
> ##### onMouseMove (Listener).fla
>     meinObjekt.onMouseMove = function() {
>        trace("Maus bewegt!");
>     };
>     Mouse.addListener(meinObjekt);
### 12.5.8 onMouseUp Das Ereignis onMouseUp wird immer dann ausgelöst, wenn der Anwender die Maustaste loslässt (siehe Mouse, Seite 625).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für das globale Mouse-Objekt zur Verfügung.
| Syntax:
>     Mouse.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onMouseUp besitzt.
| Beispiel:
>     meinObjekt = new Object();
> ##### onMouseUp (Listener).fla
>     meinObjekt.onMouseUp = function() {
>        trace("Maus losgelassen!");
>     };
>     Mouse.addListener(meinObjekt);
### 12.5.9 onMouseWheel Das Ereignis onMouseUp wird immer dann ausgelöst, wenn der Anwender das Mausrad betätigt (siehe Mouse, Seite 625).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 7 für das globale Mouse-Objekt zur Verfügung).
| Syntax:
>     Mouse.addListener(beliebigeInstanz);
| 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.
| Beispiel:
>     meinObjekt = new Object();
>     meinObjekt.onMouseWheel = function(delta, ziel) {
>        trace("Mausrad auf " + String(ziel) "gerollt!");
>        trace("Rollgeschwindigkeit ist " + String(delta));
>     };
>     Mouse.addListener(meinObjekt);
### 12.5.10 onResize (Stage) 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).
| 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.
| Syntax:
>     Stage.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onResize besitzt.
| Beispiel:
>     Stage.scaleMode = "noScale";
> ##### onResize (Listener).fla
>     meinObjekt = new Object();
>     meinObjekt.onResize = function() {
>        trace("Bühnengröße verändert!");
>     };
>     Stage.addListener(meinObjekt);
### 12.5.11 onScroller(target) 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).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für Textfield-Instanzen zur Verfügung.
| Syntax:
>     textfieldInstanz.addListener(beliebigeInstanz);
| Parameter:
| beliebigeInstanz: Bei diesem Parameter handelt es sich um ein Objekt, das eine Methode namens onScroller besitzt.
| 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);
### 12.5.12 onSetFocus (Selection) 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).
| Bemerkung:
| Diese Listener-Methode steht seit dem Flash Player 6 für das globale Selection-Objekt zur Verfügung.
| Syntax:
>     Selection.addListener(beliebigeInstanz);
| 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.
| 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 | <top> | vor >>
Zum Katalog
ActionScript 1 und 2 bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| Einstieg in ActionScript
| Einstieg in Flash 8
| Flash 8 und PHP
| Flash 8-Tutorials
| Dreamweaver 8
| Webseiten programmieren und gestalten
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 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.

[Galileo Design]
Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de