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.5 Neue Movieclip-Klassen Die Wahl, entweder einzelne Instanzen oder alle Movieclips mit neuer Funktionalität zu versehen, ist oft nicht ausreichend. Besser wäre es, eigene Klassen mit der geforderten Funktionalität erstellen und dann mit einer grafischen Repräsentation verbinden zu können. Denn stellen Sie sich vor, Sie erzeugen in Anlehnung an die Kapitel »Objekterstellung« (Seite 336) und »Vererbung« (Seite 350) eine Klasse Freundin, die nicht nur abstrakt im Arbeitsspeicher liegt, sondern auch sichtbar mit einem Symbol verknüpft ist, das zum Beispiel die Funktion eines Avatars übernehmen könnte. Hier wären die bereits bekannten Wege, jeder einzelnen Instanz neue Methoden und Eigenschaften zuzuweisen, viel zu aufwändig (und würden auch zu viel Speicherplatz verschwenden) bzw. alle Movieclips zu erweitern viel zu weit reichend (warum sollte z. B. ein Mann-Symbol auch gerne einkaufen gehen). Aber glücklicherweise können Klassen mit grafischen Symbolen zur Darstellung verbunden werden. Oder umgekehrt: Symbole dürfen Sie mit Funktionalität in Form von Klassen verknüpfen. ### 15.5.1 registerClass Die Methode registerClass erlaubt es, eine Klasse mit einem Symbol für die grafische Darstellung zu verbinden bzw. ein Symbol mit der Funktionalität aus einer Klasse zu versehen. Haben Sie beispielsweise eine Klasse mit ActionScript 1 in der folgenden Form definiert und wollen diese auch visualisieren, dann verwenden Sie diese Methode:
    function Freundin() {
##### registerClass.fla
     this.tanzwuetig = true;
    }
    Freundin.prototype.tanze = function() {
     trace("Yippie...");
    };
Um nun ein Symbol mit dieser Funktionalität zu versehen und die Klasse so mit dem Symbol zu »verschmelzen«, brauchen Sie nur das Symbol anzulegen, es über die Verknüpfungseigenschaften (engl. Linkage) mit einem eindeutigen Namen zu versehen und diesen dann per registerClass mit der Klasse zu verbinden:
    Object.registerClass("FreundinSymbol", Freundin);
Eigentlich könnten Sie nun das Symbol beliebig in Ihrem Projekt verwenden, gäbe es da nicht noch drei wesentliche Probleme. ##### Rechtzeitige Initialisierung sicherstellen Das erste Problem ist, dass die Registrierung immer vor der Verwendung eines Symbols geschehen sollte, um diese Verbindung zwischen Symbolinstanz und Klasse zu gewährleisten. Andernfalls erzeugen Sie einfach nur einen Movieclip mit dem Bild einer Freundin und keine neue Freundin mit der entsprechenden Funktionalität. Dieses Problem lösen Sie am einfachsten mit der Compilerdirektive initClip (siehe »Ereignisse«, Seite 282). Platzieren Sie dafür den gesamten Code eingerahmt von dem initClip innerhalb des ersten Schlüsselbildes des Symbols, da so diese Initialisierung bereits vor der ersten möglichen Verwendung des Symbols sichergestellt ist:
    #initclip
    function Freundin() {
     this.alter = 27;
    }
    Freundin.prototype.tanze = function() {
     trace("Yippie...");
    };
    Object.registerClass("FreundinSymbol", Freundin);
    #endinitclip
##### Instanz erstellen! Die zweite Schwierigkeit ist, wie Sie nun eine Instanz dieser Klasse Freundin erstellen. Zwar können Sie weiterhin mit dem new in der Form meineFreundin = new Freundin(); arbeiten, doch dann erhalten Sie auch weiterhin eine abstrakte Klasse ohne Bezug zu dem Symbol. Der korrekte Weg ist, dass Sie dieselben Methoden wie bei Movieclips verwenden, indem Sie eine Instanz erzeugen
| durch Drag and Drop aus der Bibliothek in die Anwendung,
| durch attachMovie,
| oder durch duplicateMovieClip.
Mit Hilfe des passenden Instanznamens können Sie dann die Instanz wie jedes andere Objekt ansprechen und verwenden und die definierten Methoden und Eigenschaften nutzen:
    _root.attachMovie("FreundinSymbol", "meineFreundin", 1);
    meineFreundin.tanze();
##### Movieclip-Fähigkeiten erben Die letzte Herausforderung besteht nun darin, dass ein Symbol meist die gleiche Funktionalität wie ein Movieclip besitzen sollte, was in diesem Beispiel bisher aber nicht vollständig gegeben ist. So lässt sich eine Freundin auch nicht mehr wie üblich per meineFreundin.removeMovieClip(); loswerden. Doch sobald die Klasse auch die Eigenschaften und Fähigkeiten von der Klasse Movieclip erbt, geht auch dies:
    #initclip
    // Konstruktor
    function Freundin() {
     // Rufe Konstruktor der Oberklasse auf
     super();
     // Eigenschaft
     this.alter = 27;
    }
    // Erbe von MovieClip (muss vor dem Erweitern um eigene Methoden geschehen)
    Freundin.prototype = new MovieClip();
    // Methoden
    Freundin.prototype.tanze = function() {
     trace("Yippie...");
    };
    Freundin.prototype.onEnterFrame = function() {
     // Bewege auf und ab
     this._y = Math.sin(getTimer()/500)*50+200;
    };
    // Verbinde Symbol und Klasse
    Object.registerClass("FreundinSymbol", Freundin);
    #endinitclip
Jetzt haben Sie eine eigene Klasse erstellt, die sich wie Movieclips verhält, aber durch eigene Methoden und Eigenschaften ergänzt und mit Grafik versehen werden kann. Letztendlich wird dies auch als Komponente bezeichnet, nur dass diese Komponente bisher nicht anpassbar ist. ##### ActionScript 2.0 Wie bereits bei dem für alle Objekte verfügbaren addProperty gibt es auch bei dem registerClass dank ActionScript 2.0 viel einfachere Wege, die zum gewünschten Ergebnis führen. Diese werden ab Seite 396 beschrieben.
<< 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