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 17 Komponenten
  gp 17.1 Vorgefertigte Komponenten
    gp 17.1.1 Flash MX
    gp 17.1.2 Flash MX 2004
  gp 17.2 Anwendung von Komponenten
    gp 17.2.1 Komponenten einstellen
    gp 17.2.2 Bindungen und Schemata
    gp 17.2.3 Anpassung
    gp 17.2.4 Programmierte Verwendung
    gp 17.2.5 Vorbehalte
  gp 17.3 Komponenten erstellen
    gp 17.3.1 ActionScript 1
    gp 17.3.2 ActionScript 2.0
    gp 17.3.3 Parameter festlegen
  gp 17.4 Verhalten
    gp 17.4.1 Verhalten anwenden
    gp 17.4.2 Verhalten anpassen


Rheinwerk Design - Zum Seitenanfang

17.3 Komponenten erstellen  downtop

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.


Rheinwerk Design - Zum Seitenanfang

17.3.1 ActionScript 1  downtop

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

Rheinwerk Design - Zum Seitenanfang

17.3.2 ActionScript 2.0  downtop

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.


Rheinwerk Design - Zum Seitenanfang

17.3.3 Parameter festlegen  toptop

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