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 15 Movieclips
  gp 15.1 Eigenschaften
  gp 15.2 Fähigkeiten
    gp 15.2.1 Movieclip-Methoden
    gp 15.2.2 Zeichnungsmethoden
  gp 15.3 Selbst definierte Eigenschaften und Fähigkeiten
    gp 15.3.1 Eigenschaften einer Instanz hinzufügen
    gp 15.3.2 Eigenschaften in die Symboldefinition aufnehmen
    gp 15.3.3 Eigenschaften allen Movieclips hinzufügen
    gp 15.3.4 addProperty
    gp 15.3.5 Fähigkeiten als globale Funktion zur Verfügung stellen
    gp 15.3.6 Fähigkeiten einer Instanz hinzufügen
    gp 15.3.7 Fähigkeiten in die Symboldefinition aufnehmen
    gp 15.3.8 Fähigkeiten allen Movieclips hinzufügen
  gp 15.4 Nützliche Erweiterungen
    gp 15.4.1 Positionen auf der Bühne
    gp 15.4.2 Spiegeln
    gp 15.4.3 Bewegen
  gp 15.5 Neue Movieclip-Klassen
    gp 15.5.1 registerClass


Rheinwerk Design - Zum Seitenanfang

15.5 Neue Movieclip-Klassen  downtop

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.


Rheinwerk Design - Zum Seitenanfang

15.5.1 registerClass  toptop

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

gp  durch Drag and Drop aus der Bibliothek in die Anwendung,
gp  durch attachMovie,
gp  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
  
  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