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 13 Objekterstellung
  gp 13.1 Artenvielfalt
    gp 13.1.1 Programmiermodelle
  gp 13.2 Philosophie
  gp 13.3 Blackbox
  gp 13.4 Klassen
  gp 13.5 Objekte
  gp 13.6 Selbst definierte Objekte


Rheinwerk Design - Zum Seitenanfang

13.6 Selbst definierte Objekte  toptop

Um selbst definierte Objekte zu erzeugen, bietet Flash ebenfalls eine ganze Reihe an Möglichkeiten. Sollten Sie nur eine Instanz benötigen, dann erzeugen Sie in der Regel eine Instanz von der Klasse Object:

meineFreundin = new Object();
freundin.fla

Von nun an steht eine Instanz namens »meineFreundin« von der Klasse Object zur Verfügung. Wenn Sie Ihr Projekt über Steuerung Film testen in der Entwicklungsumgebung ausprobieren und innerhalb des Testmodus das Menü Fehlersuche Variablen auflisten wählen, dann zeigt Flash sämtliche Variablen und Instanzen inklusive der Freundin »meineFreundin« im Ausgabefenster an. Fehlersuche Objekte auflisten hingegen beschränkt sich auf Movieclips, Texte, Formen und Schaltflächen.

Die Freundin-Instanz verwenden Sie ganz ähnlich wie Movieclip-Instanzen, wobei dieses Objekt von Haus aus andere Eigenschaften und andere Fähigkeiten besitzt. Eine horizontale Position oder die Methode play sind ihr zum Beispiel erst einmal fremd.

Möchten Sie nun eigene Eigenschaften erfinden, dann gestaltet sich das recht einfach. Die Angabe des Instanznamens, dann ein Punkt und dann ein Bezeichner reichen bereits aus, um eine Instanzvariable, also eine Eigenschaft zu definieren:

meineFreundin.name = "Sandra";

Da auch Funktionen bzw. Methoden über einen Bezeichner verfügen, funktioniert das an dieser Stelle genauso:

meineFreundin.noergle = function () {
   trace("Menno!");
};
alternative Schreibweise

Nun besitzt meine Freundin immerhin einen Namen und die Fähigkeit zu nörgeln. Für diese Art der Objektinitialisierung bietet Flash eine zusätzliche Schreibweise mit geschweiften Klammern, die sich durch einen kürzeren, aber dafür schwerer lesbaren Programmcode auszeichnet:

// erzeuge Instanz
meineFreundin = {};
// erzeuge Instanz mit Eigenschaft
meineFreundin = {name:"Sandra"};
// erzeuge Instanz mit Eigenschaft und Methode
meineFreundin = {name:"Sandra",
                 noergle:function () {
                            trace("Menno!");
                         }
                };
Zugriff

Auf eine Eigenschaft oder die Methode greifen Sie zu, indem Sie diese wie bei der Definition nur durch einen Punkt getrennt direkt im Anschluss an den Pfad zur Instanz angeben:

trace(meineFreundin.name);
meineFreundin.noergle();

Um innerhalb einer Methode einer Instanz auf eine Eigenschaft oder Methode derselben Instanz zuzugreifen, verwenden Sie das Schlüsselwort this, das einen Bezug zum Objekt beinhaltet. Andernfalls würde ActionScript die Eigenschaft oder Methode in dem Movieclip suchen, in der sie definiert ist (seit Flash MX) oder in der sie aufgerufen wird (Flash 5):

meineFreundin.geburtstag=new Date(1976, 10, 18);
meineFreundin.ermittleAlter=function (){
   var aktuellesDatum=new Date();
   var alter=new Date();
   // Berechne Differenz zwischen heute und Geburtstag auf die Millisekunde genau
   alter.setTime(aktuellesDatum-this.geburtstag);
   // Berücksichtige Ursprung der Computerzeitrechnung
   return alter.getFullYear()-1970;
}
trace(meineFreundin.ermittleAlter());
Prototypen

Um nun nicht für jede Freundin diese Zeilen jedes Mal wiederholen zu müssen, bietet es sich an, eine Klasse für Freundinnen zu entwerfen. In Flash spricht man an dieser Stelle von einem Prototypen. Dieser Prototyp wird als Funktion deklariert – was kein Problem ist, da es sich bei Funktionen ebenfalls um Objekte handelt. Es hat sich übrigens eingebürgert, den Funktionsnamen bei Klassen oder Prototypen mit einem Großbuchstaben zu beginnen.

function Freundin () {
}

Eine Instanz dieser Klasse erzeugt der Operator new, indem er zusammen mit der dann als Konstruktor bezeichneten Funktion verwendet wird. Die folgende Anweisung erzeugt eine erste Instanz der Klasse Freundin.

meineFreundin = new Freundin();

Auf dieselbe Art und Weise legen Sie beliebig viele weitere Instanzen an:

meineFreundin = new Freundin();
deineFreundin = new Freundin();
exFreundin = new Freundin();
kurschatten = new Freundin();

Da sich sämtliche mit this versehene Anweisungen in der Funktion Freundin auf die gerade geschaffene Instanz beziehen und die Funktion beim Aufruf mit new einmal abgearbeitet wird, ist die Initialisierung der Instanz ein Leichtes:

function Freundin (name) {
   this.name=name;
}
meineFreundin = new Freundin("Sandra");
trace(meineFreundin.name);

Letztendlich lassen sich auch die Methoden so definieren. Doch dadurch erhält jede Instanz eine Kopie der Fähigkeiten:

function Freundin (name) {
   this.name=name;
   this.noergle = function () {
                     trace("Menno!");
                  };
}
meineFreundin = new Freundin("Sandra");
meineFreundin.noergle();
deineFreundin = new Freundin("Veronika");
deineFreundin.noergle();
Prototype

Die Prototype-Eigenschaft des Funktionsobjektes ermöglicht es, einer Klasse beliebig viele Fähigkeiten (Methoden) hinzuzufügen.

Alternativ bietet sich das Prototypen-Objekt der Klasse an. Dort abgelegte Methoden sind allen Instanzen bekannt und benötigen so nur einmal Speicherplatz. Zusätzlich ermöglicht diese zweite Variante das Variieren einer Fähigkeit der gesamten Klasse zur Laufzeit, indem die Methode innerhalb des Prototypen geändert wird – aus der Sicht von Programmierern von klassenbasierten Sprachen wie Java ist diese zugegebenermaßen unübersichtliche Dynamik zur Laufzeit aber eher schlechter Stil:

function Freundin (name) {
   this.name=name;
}
Freundin.prototype.noergle = function () {
   trace("Menno!");
};
meineFreundin = new Freundin("Sandra");
meineFreundin.noergle();

Dieser Prototyp ist eine der mächtigsten Eigenschaften in ActionScript, da er wesentliche Elemente der Objektorientierung wie z.B. die Vererbung erst möglich macht. Das nächste Kapitel widmet sich anhand eines Beispiels mit Männern ausführlich diesem Thema.

 << 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