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