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 17 Komponenten
|  | 17.1 Vorgefertigte Komponenten
|  |  | 17.1.1 Flash MX
|  |  | 17.1.2 Flash MX 2004
|  | 17.2 Anwendung von Komponenten
|  |  | 17.2.1 Komponenten einstellen
|  |  | 17.2.2 Bindungen und Schemata
|  |  | 17.2.3 Anpassung
|  |  | 17.2.4 Programmierte Verwendung
|  |  | 17.2.5 Vorbehalte
|  | 17.3 Komponenten erstellen
|  |  | 17.3.1 ActionScript 1
|  |  | 17.3.2 ActionScript 2.0
|  |  | 17.3.3 Parameter festlegen
|  | 17.4 Verhalten
|  |  | 17.4.1 Verhalten anwenden
|  |  | 17.4.2 Verhalten anpassen
## 17.3 Komponenten erstellen Die Erstellung von eigenen Komponenten ist wirklich keine große Sache, da es nur wenige Schritte zu befolgen gibt. Zwar gestaltet sich das Ganze mit ActionScript 1 noch etwas umständlicher als mit ActionScript 2.0, aber dennoch ist das selbst in diesem Fall eine überschaubare Herausforderung! Nur sobald die Komponente zu den von Macromedia angebotenen Components V2 passen soll, wird es deutlich anspruchsvoller (siehe »Vorbehalte« auf Seite 439). Aus diesem Grund beschränkt sich dieses Kapitel auf die grundlegenden Schritte, um zu leistungsfähigen Komponenten zu gelangen. ### 17.3.1 ActionScript 1 ##### Siehe Objekterstellung in Kapitel 13 Um eine Komponente anzulegen, benötigen Sie eine ActionScript-Klasse und ein Movieclip-Symbol. Auch wenn es nicht unbedingt notwendig ist, hat es sich eingebürgert, die Klasse innerhalb des Symbols im ersten Schlüsselbild zu platzieren:
    function Frau() {
##### erstellen mit ActionScript 1
    }
Damit die Klasse alle notwendigen Fähigkeiten und Eigenschaften von der Klasse MovieClip übernimmt, kommt die Vererbung zum Einsatz:
    Frau.prototype = new MovieClip();
Anschließend legen Sie die Eigenschaften und Methoden fest, wobei einer Komponente durch die Vererbung automatisch alle Eigenschaften und Methoden von MovieClips zur Verfügung stehen:
    function Frau() {
       this.elan = 100;
    }
    Frau.prototype = new MovieClip();
    Frau.prototype.onEnterFrame = function() {
       // Bewege auf und ab
       this._y = Math.sin(getTimer()/500)*this.elan+200;
    };
Der wichtigste Schritt, um ein Symbol und eine Klasse zu einer Komponente zu verschmelzen, ist die statische Methode registerClass in der Klasse Object. Diese verbindet das Symbol mit der Klasse. Das funktioniert aber nur, wenn das Symbol einen Verknüpfungsnamen trägt (engl. Linkage), den Sie in der Bibliothek festlegen:
    // Symbol
    var linkage:String = "frau";
    // Klasse
    var classObj = Frau;
    // Verschmelze Symbol und Klasse zu einer Komponente
    Object.registerClass(linkage, classObj);
Grundsätzlich sind Sie fertig, wäre da nicht ein »Reihenfolgeproblem« bei der Erstellung. Denn momentan müssen Sie eine Instanz erzeugen, damit die registerClass-Methode ausgeführt wird. Doch dadurch geschieht die Verschmelzung von Symbol und Klasse erst nachträglich! Um nun das Erzeugen der Komponente vorher zu erzwingen, nutzen Sie einen initClip-Block, der einmalig ganz am Anfang ausgeführt wird (siehe »Movieclips«, Seite 362). Das komplette Skript sieht dann so aus:
    #initclip
    function Frau() {
       this.elan = 100;
    }
    Frau.prototype = new MovieClip();
    Frau.prototype.onEnterFrame = function() {
       // Bewege auf und ab
       this._y = Math.sin(getTimer()/500)*this.elan+200;
    };
    // Symbol
    var linkage:String = "frau";
    // Klasse
    var classObj = Frau;
    // Verschmelze Symbol und Klasse zu einer Komponente
    Object.registerClass(linkage, classObj);
    #endinitclip
### 17.3.2 ActionScript 2.0 ##### erstellen mit ActionScript 2.0 Die Erstellung einer Komponente mit ActionScript 2.0 unterscheidet sich nur wenig von der Variante mit ActionScript 1. In erster Linie profitieren Sie als Entwickler davon, dass die notwendige Klasse als externe Datei vorliegt und sich leicht mit einem Symbol verbinden lässt. ##### Klasse erstellen! Im ersten Schritt benötigen Sie eine Klasse, die von MovieClip erbt und mit der gewünschten Funktionalität versorgt wird:
    class Frau extends MovieClip {
       var elan:Number = 100;
       function Frau() {
       }
       function onEnterFrame() {
          // Bewege auf und ab
          _y = Math.sin(getTimer()/500)*elan+200;
       }
    }
##### Klasse mit Symbol verbinden! Im zweiten Schritt verbinden Sie diese Klasse mit dem gewünschten Symbol, indem Sie in der Bibliothek die Verknüpfungseigenschaften für das Symbol wählen und dort die Klasse angeben. ### 17.3.3 Parameter festlegen Sofern Komponenten visuell per Maus zusammengeklickt werden, dann bieten sich Komponentenparameter an. Denn bei einer programmierten Erzeugung von Komponenten benötigen Sie ohnehin keine Parameter, die im Eigenschaften- oder Komponenteninspektor sichtbar sind. Diese Parameter erstellen Sie in der Bibliothek über Optionsmenü • Komponentendefinition für jedes einzelne Symbol. Die hier angelegten Parameter werden im Eigenschafteninspektor für jede Instanz einzeln angepasst. Zur Laufzeit stehen die Parameter in der Instanz mit den eingestellten Werten zur Verfügung. ##### Metadaten Innerhalb von ActionScript 2.0-Dateien können außerdem noch Metadaten verwendet werden, um das Anlegen von Komponentenparametern zu erleichtern (siehe Tabelle). Im Zusammenspiel mit Macromedias Komponenten ermöglichen Metadaten ebenfalls die Bindung von Parametern und das Anlegen selbst definierter Ereignisse (http://livedocs.macromedia.com/flash/mx2004/main/05_cre31.htm). Vermeiden Sie Metadaten, wenn Sie auf das von Macromedia mitgelieferte Framework für Komponenten verzichten wollen!

Tabelle 17.8 Metadaten-Tags

Tag | Beschreibung | Bemerkung
Inspectable | Zeigt eine Eigenschaft im Komponenten- und Eigenschafteninspektor an, um sie dort einzustellen. |
InspectableList | Beschreibt die Eigenschaften, die sowohl im Eigenschafteninspektor als auch im Komponenteninspektor sichtbar sein sollen. Ohne Angabe dieses Tags werden in beiden Bedienfeldern dieselben Parameter angezeigt. |
Event | Definiert ein Komponenten-Ereignis. | Funktioniert nur im Zusammenspiel mit der Klasse mx.events.UIEvent der Macromedia-Komponenten.
Bindable | Macht eine Eigenschaft in dem Bindungen-Register des Komponenteninspektors zugänglich, so dass diese mit anderen Eigenschaften verknüpft werden kann. | Funktioniert nur im Zusammenspiel mit den DataBindingClasses der Macromedia-Komponenten.
ChangeEvent | Legt ein Ereignis fest, das durch Datenbindung ausgelöst wird. | Funktioniert nur im Zusammenspiel mit den DataBindingClasses der Macromedia-Komponenten.
Collection | Beschreibt eine Sammlung von Eigenschaften (engl. Collection), die im Komponenteninspektor angezeigt wird. | Funktioniert nur im Zusammenspiel mit der Klasse mx.utils.CollectionImpl der Macromedia-Komponenten.
IconFile | Legt den Dateinamen für eine PNG-Datei fest, die als Piktogramm für die Komponente verwendet wird. |
##### Metadaten interpretieren Um Flash dazu zu bewegen, Metadaten zu interpretieren, geben Sie die Klasse mit den Metadaten als Quelle in der Komponentendefinition innerhalb der Bibliothek über Optionsmenü • Komponentendefinition für jedes einzelne Symbol an. Die Metadaten werden ab dann für jede Instanz berücksichtigt. Das folgende Skript erzwingt, dass der Parameter elan im Eigenschafteninspektor und Komponenteninspektor angezeigt und bearbeitet werden kann:
    class Frau extends MovieClip {
##### inspectable
       [Inspectable]
       var elan:Number = 100;
       function Frau() {
       }
       function onEnterFrame() {
          // Bewege auf und ab
          _y = Math.sin(getTimer()/500)*elan+200;
       }
    }
Es reicht für jede Eigenschaft oder Getter-/Setter-Methode aus, dieser ein [Inspectable] voranzustellen, um den Wert in der Entwicklungsumgebung komfortabel einstellen zu können. Bei Bedarf dürfen Sie mit Inspectable noch weitere Vorgaben wie z.B. den in den Bedienfeldern anzuzeigenden Namen machen:
    class Frau extends MovieClip {
       [Inspectable(name="Super Elan", defaultValue=50)]
       var elan:Number;
       function Frau() {
       }
       function onEnterFrame() {
          // Bewege auf und ab
          _y = Math.sin(getTimer()/500)*elan+200;
       }
    }
##### Änderungen werden nicht übernommen Flash MX 2004 erkennt Änderungen an den Metadaten-Tags einer Klasse nicht immer. In diesem Fall gibt es verschiedene Strategien, diese Aktualisierung zu erzwingen. Meist reicht es aus, in den Komponentendefinitionen der Komponente die Klasse noch einmal neu hineinzuschreiben. Sollte dies nicht funktionieren, dann hilft es oft, die zugehörige ASO-Datei (siehe ASO im Kapitel »ActionScript 2.0«, Seite 403) zu löschen. Und wenn dies auch nicht zum gewünschten Ergebnis führt, dann bleibt nur noch der Versuch, Flash neu zu starten.

Tabelle 17.9 Attribute des Inspectable-Tags

Attribute | Typ | Beschreibung
defaultValue | String oder Number | Ein optionaler Standardwert für die Eigenschaft.
enumeration | String | Legt eine durch Kommata getrennte optionale Liste für erlaubte Werte fest.
listOffset | Number | Steht aus Kompatibilitätsgründen mit Flash MX zur Verfügung, um optional den Standardindex einer List anzugeben.
name | String | Die optional angezeigte Bezeichnung einer Eigenschaft.
type | String | Optionale Typangabe für die Eigenschaft. Zur Auswahl stehen: Array, Boolean, Color, Font Name, List, Number, Object und String.
variable | String | Steht aus Kompatibilitätsgründen mit Flash MX zur Verfügung, um optional den Variablennamen der Eigenschaft anzugeben.
verbose | Number | Legt optional fest, welche Eigenschaften nicht im Eigenschafteninspektor, sondern nur im Komponenteninspektor zu sehen sein sollen (verbose = 1).
<< 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