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 15 Movieclips
|  | 15.1 Eigenschaften
|  | 15.2 Fähigkeiten
|  |  | 15.2.1 Movieclip-Methoden
|  |  | 15.2.2 Zeichnungsmethoden
|  | 15.3 Selbst definierte Eigenschaften und Fähigkeiten
|  |  | 15.3.1 Eigenschaften einer Instanz hinzufügen
|  |  | 15.3.2 Eigenschaften in die Symboldefinition aufnehmen
|  |  | 15.3.3 Eigenschaften allen Movieclips hinzufügen
|  |  | 15.3.4 addProperty
|  |  | 15.3.5 Fähigkeiten als globale Funktion zur Verfügung stellen
|  |  | 15.3.6 Fähigkeiten einer Instanz hinzufügen
|  |  | 15.3.7 Fähigkeiten in die Symboldefinition aufnehmen
|  |  | 15.3.8 Fähigkeiten allen Movieclips hinzufügen
|  | 15.4 Nützliche Erweiterungen
|  |  | 15.4.1 Positionen auf der Bühne
|  |  | 15.4.2 Spiegeln
|  |  | 15.4.3 Bewegen
|  | 15.5 Neue Movieclip-Klassen
|  |  | 15.5.1 registerClass
## 15.3 Selbst definierte Eigenschaften und Fähigkeiten Da die Fähigkeiten und Eigenschaften eines Movieclips nicht immer ausreichen, bietet ActionScript auch die Möglichkeit, neue hinzuzufügen. ### 15.3.1 Eigenschaften einer Instanz hinzufügen Der einfachste Weg zu neuen Eigenschaften ist die konventionelle Definition von Variablen. Diese Variablen sind bezüglich einer Movieclip-Instanz nichts anderes als Eigenschaften – manchmal auch Instanzvariablen genannt! Angenommen Sie programmieren Pokémon-Karten mit Hilfe von Movieclips (für die älteren unter Ihnen geht das auch mit einem Quartettspiel wie zum Beispiel »Die schnellsten Autos«). Jede dieser Karten beinhaltet eine Reihe von zusätzlichen Eigenschaften wie Typ, Größe und Gewicht, die Movieclips nicht von Natur aus besitzen. Für einzelne Instanzen definieren Sie die Eigenschaften, indem Sie diese der Instanz zuweisen:
    // Definiere neue Eigenschaften einer Instanz von außerhalb
    meinPokemon.name = "Bisasam";
    meinPokemon.typ = "Pflanze/Gift";
    meinPokemon.groesse = 0.7;
    meinPokemon.gewicht = 6.9;
### 15.3.2 Eigenschaften in die Symboldefinition aufnehmen Damit Sie die Eigenschaften nicht für jede einzelne Instanz deklarieren müssen, platzieren Sie die Initialisierung im zugehörigen Movieclip-Symbol – vorzugsweise im ersten Bild. Der besseren Lesbarkeit wegen leitet das folgende Skript sämtliche Eigenschaften mit der Objektreferenz this ein – dies vermeidet außerdem Missverständnisse bezüglich der Gültigkeit von Eigenschaften:
    // Definiere neue Eigenschaften innerhalb eines Symbols
    this.name = "Bisasam";
    this.typ = "Pflanze/Gift";
    this.groesse = 0.7;
    this.gewicht = 6.9;
Jede Instanz dieses Symbols wird somit von Begin an mit diesen Eigenschaften versorgt – einer individuellen Anpassung der Eigenschaftswerte jeder einzelnen Instanz steht natürlich nichts im Wege. ### 15.3.3 Eigenschaften allen Movieclips hinzufügen Sollen jedoch nicht nur ausgewählte, sondern alle Movieclips zusätzliche Eigenschaften erhalten, dann funktioniert das mit Hilfe des Prototypen des Movieclip-Objektes (MovieClip.prototype). Die Eigenschaften dieses Prototypen gelten für alle mit ihm verbundenen Instanzen, also in diesem Fall für alle Movieclip-Instanzen. Bei einer Veränderung der Eigenschaft wird diese außerdem automatisch direkt der Instanz zugewiesen, was Seiteneffekte mit anderen Instanzen vermeidet:
    // Definiere neue Eigenschaften einer Instanz innerhalb
    MovieClip.prototype.name = "Bisasam";
    MovieClip.prototype.typ = "Pflanze/Gift";
    MovieClip.prototype.groesse = 0.7;
    MovieClip.prototype.gewicht = 6.9;
### 15.3.4 addProperty Falls eine Eigenschaft mit Funktionalität gekoppelt sein soll, dann bietet sich die Methode addProperty des Object-Objektes an. Diese Methode steht für alle Objekte in Flash zur Verfügung, da grundsätzlich alle Objekte die Eigenschaften und Fähigkeiten vom Object-Objekt übernehmen! Die Methode addProperty erfordert als Parameter den Namen der Eigenschaft und eine Funktion zum Ermitteln (getter) sowie eine Funktion zum Setzen (setter) der Eigenschaft.
    // getter
##### brightness.fla
    function ermittleHelligkeit() {
       var farbInstanz = new Color(this);
       var transformationsInstanz = farbInstanz.getTransform();
       trace("bla:"+transformationsInstanz.rb);
       var helligkeit =
        (transformationsInstanz.rb+transformationsInstanz.rb+transformationsInstanz.bb)/3;
       var helligkeitInProzent = helligkeit/2.56;
       return helligkeitInProzent;
    }
    // setter
    function setzeHelligkeit(helligkeitInProzent) {
       var farbInstanz = new Color(this);
       var helligkeit = 2.56*helligkeitInProzent;
       var transformationsInstanz = new Object();
       transformationsInstanz.rb = helligkeit;
       transformationsInstanz.gb = helligkeit;
       transformationsInstanz.bb = helligkeit;
       new Color(this).setTransform(transformationsInstanz);
    }
    // Registriere die Eigenschaft
    var success=meineMovieClipInstanz.addProperty("_brightness",
    ermittleHelligkeit, setzeHelligkeit);
    trace("Neue Eigenschaft registriert: " + success);
    // Teste die Eigenschaft
    meineMovieClipInstanz._brightness=50;
    trace(meineMovieClipInstanz._brightness);
Um eine schreibgeschützte Eigenschaft zu erhalten, geben Sie anstelle der Setter-Funktion null als Parameter an:
    // Getter
##### distance.fla
    function ermittleAbstand() {
       var point = new Object();
       point.x = this._x;
       point.y = this._y;
       this._parent.localToGlobal(point);
       var distance = Math.sqrt(point.x*point.x+point.y*point.y);
       return distance;
    }
    // Registriere die Eigenschaft
    meineMovieClipInstanz.addProperty("_distance", ermittleAbstand, null);
    // Teste die Eigenschaft
    trace(meineMovieClipInstanz._distance);
Natürlich ist es wie schon bei den normalen Eigenschaften möglich, die Definition innerhalb eines Movieclip-Symbols oder gleich für alle Movieclips durchzuführen. Achten Sie nur darauf, dass die Getter- und Setter-Funktionen so definiert sind, dass Flash sie findet; Bei einer Registrierung der Eigenschaft im Prototypen bietet sich zum Beispiel derselbe Ort für die Funktionen an:
    // Getter
    MovieClip.prototype.ermittleHelligkeit = function() {
       var farbInstanz = new Color(this);
       var transformationsInstanz = farbInstanz.getTransform();
       var helligkeit =
         (transformationsInstanz.rb+transformationsInstanz.rb+transformationsInstanz.bb)/3;
       var helligkeitInProzent = helligkeit/2.56;
       return helligkeitInProzent;
    }
    // Setter
    MovieClip.prototype.setzeHelligkeit= function (helligkeitInProzent) {
       var farbInstanz = new Color(this);
       var helligkeit = 2.56*helligkeitInProzent;
       var transformationsInstanz = new Object();
       transformationsInstanz.rb = helligkeit;
       transformationsInstanz.gb = helligkeit;
       transformationsInstanz.bb = helligkeit;
       new Color(this).setTransform(transformationsInstanz);
    }
    // Registriere die Eigenschaft
    MovieClip.prototype.addProperty("_brightness",
    MovieClip.prototype.ermittleHelligkeit,
    MovieClip.prototype.setzeHelligkeit);
    // Teste die Eigenschaft
    meineMovieClipInstanz._brightness=50;
    trace(meineMovieClipInstanz._brightness);
### 15.3.5 Fähigkeiten als globale Funktion zur Verfügung stellen Reichen die Fähigkeiten von Movieclips einmal nicht aus, dann fassen Sie eine Folge von Anweisungen als neue Methode zusammen. Der einfachste, aber zugleich auch unkomfortabelste Weg ist, dass Sie eine Funktion deklarieren, der Sie die Objektreferenz (also den Instanznamen inklusive Pfad) und die Parameter übergeben:
    _global.hflip = function(obj) {
##### hflip.fla
       // Spiegele horizontal
       obj._xscale *= -1;
    };
    // Teste die Fähigkeit
    hflip(meineMovieClipInstanz);
### 15.3.6 Fähigkeiten einer Instanz hinzufügen Eleganter ist es hingegen, wenn Sie die Funktion wie eine Eigenschaft direkt in der Movieclip-Instanz als Methode definieren und anstelle des Parameters für die Objektreferenz this verwenden:
    meineMovieClipInstanz.hflip = function() {
##### flip.fla
       // Spiegele horizontal
       this._xscale *= -1;
    };
    // Teste die Fähigkeit
    meineMovieClipInstanz.hflip();
### 15.3.7 Fähigkeiten in die Symboldefinition aufnehmen Um die Zuweisung der neuen Fähigkeit zu vereinfachen, platzieren Sie die Methode direkt in den zugehörigen Movieclip-Symbolen, wodurch die Methode allen Instanzen dieser Symbole bekannt ist. Auch an dieser Stelle ist es empfehlenswert, der Methodendefinition das this voranzustellen, um die Lesbarkeit des Programmcodes zu verbessern. Innerhalb der Methoden ist das this ohnehin notwendig, um den Bezug zur Instanz bei der Ausführung korrekt herzustellen:
    this.hflip = function() {
       // Spiegele horizontal
       this._xscale *= -1;
    };
### 15.3.8 Fähigkeiten allen Movieclips hinzufügen Möchten Sie Fähigkeiten für alle Movieclips verfügbar machen, dann funktioniert das mit Hilfe des Prototypen des Movieclip-Objektes (MovieClip.prototype). Die Fähigkeiten dieses Prototypen gelten für alle mit ihm verbundenen Instanzen, also in diesem Fall für alle Movieclip-Instanzen:
    MovieClip.prototype.hflip = function() {
       // Spiegele horizontal
       this._xscale *= -1;
    };
    // Teste die Fähigkeit
    meineMovieClipInstanz.hflip();
<< 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