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.2 Anwendung von Komponenten  downtop

Komponenten lassen sich sowohl durch Programmierung einbinden als auch visuell mit Hilfe zahlreicher Bedienfelder verwenden und konfigurieren. Dies erlaubt es Programmiernovizen, dank Bindungen, Schemata und Verhalten schnell zu Ergebnissen zu gelangen.

Live-Vorschau

Einige Komponenten erlauben eine Vorschau in der Entwicklungsumgebung, die dem Erscheinungsbild in der Anwendung schon recht nahe kommt. Um die Vorschau für Komponenten zu aktivieren, wählen Sie Steuerung Live-Vorschau aktivieren. Änderungen des Designs haben jedoch keinerlei Auswirkungen auf die Live-Vorschau. Denn Komponenten, die diese Vorschau anbieten, bedienen sich externer oder eingebetteter SWF-Dateien. Diese werden bei der grafischen Modifizierung von Komponenten nicht angepasst, außer es wird eine neue Vorschaudatei erzeugt.

Die Anwendung von Komponenten in Flash MX geschieht sehr aehnlich zu Flash MX 2004. Flash MX 2004 bietet jedoch in der Professional-Version noch einige Extras wie den Komponenten-Inspektor, der Bindungen und Schemata erlaubt. Die meisten dieser Zusaetze basieren jedoch auf der Architektur der Komponenten der 2. Generation, die einiges an weiterem ActionScript-Code im Hintergrund einbetten muessen. Fuer komplett selbst entwickelte Anwendungen sollte deshalb ueberprueft werden, ob ein Verzicht auf diese Funktionen nicht von Vorteil sein kann (siehe »Vorbehalte« auf Seite 439).

Um eine Komponente in ein Projekt einzubinden, öffnen Sie in Flash MX 2004 das Bedienfeld Komponenten über Fenster Entwicklungs-Bedienfelder Komponenten. Die für Sie nützliche Komponente müssen Sie jetzt nur noch mit gedrückter Maustaste aus dem Bedienfeld Komponenten in das Projekt ziehen.

Kompilierte Movieclips (SWC)

Vorgefertigte Komponenten liegen häufig in Form von kompilierten Movieclips (SWC) vor. Diese sind zwar nicht für die weitere Bearbeitung durch den Entwickler gedacht, mit etwas Handarbeit kann aber dennoch deren Inhalt analysiert werden. Gerade bei schlecht dokumentierten Komponenten ist dies nützlich. Damit Sie an den »Inhalt« eines kompilierten Symbols herankommen, benennen Sie die Endung von SWC in ZIP um. Der Inhalt lässt sich nun mit Programmen wie z.B. Winzip einfach entpacken, da es sich bei einer kompilierten Komponente um nichts anderes handelt als um eine ZIP-Datei, die eine SWF-Datei mit dem Bytecode der Komponente, Intrinsic-Klassen als ASI-Dateien zur Beschreibung der ActionScript-Schnittstellen (siehe »Intrinsic« ab Seite 424) und eine Konfigurationsdatei im XML-Format enthalten.


Rheinwerk Design - Zum Seitenanfang

17.2.1 Komponenten einstellen  downtop

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 17.3   Parameter im Eigenschafteninspektor

In den meisten Fällen konfigurieren Sie eine Komponente im Projekt, indem Sie die zugehörige Instanz auswählen und die Parameter in Eigenschafteninspektor festlegen.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 17.4   Komponenten-Inspektor_bei_ausgewaehlter_ComboBox-Komponente

Komponenten-Inspektor

Eine Neuerung ist der Komponenten-Inspektor (Fenster Entwicklungs-Bedienfelder Komponenten-Inspektor). Dieser bietet meist eine umfangreichere Liste mit Einstellungen als der Eigenschafteninspektor und erlaubt das Anlegen von Bindungen und Schemata.


Rheinwerk Design - Zum Seitenanfang

17.2.2 Bindungen und Schematdowntop

Meist handelt es sich bei den Daten in einer Anwendung nicht um native Flash-Datentypen, so wie die spaetere Verarbeitung in Flash es erfordert – insbesondere falls diese mit einer Datenquelle ueber XML oder aehnliche Formate ausgetauscht werden. Deshalb ist dann ein Schema zur Konvertierung erforderlich. Ein Schema legt die Datenstruktur fest, die anschliessend fuer Bindungen verwendet wird. Die Datenstruktur fuer das von einer Komponente gelieferte Ergebnis geben Sie innerhalb des Komponenten-Inspektors im Register Schema vor.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 17.5   Ein Schema legt fest, wie Flash die Strukturen einer Komponente in Datenstrukturen für Bindungen umwandelt.

Bindungen

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 17.6   Bindungen erlauben es auf einfache Art und Weise, Daten zwischen Komponenten wie z.B. einer XML-Anbindung und einer Tabelle auszutauschen, ohne programmieren zu müssen.

Bei Bindungen handelt es sich um eine Möglichkeit, Komponenten über ihre Eigenschaften miteinander zu verbinden: Wenn sich die Eigenschaft X der Komponente A ändert, kopiert Flash automatisch den neuen Wert in die gebundene Eigenschaft Y der Komponente B. Bindungen erstellen Sie im Register Bindungen innerhalb des Komponenten-Inspektors.


Rheinwerk Design - Zum Seitenanfang

17.2.3 Anpassung  downtop

Grundsätzlich können Sie sich andere Mechanismen für die Anpassung von Komponenten einfallen lassen als der von Macromedia mit der zweiten Generation in Flash MX 2004 eingeführten. Beispielsweise gibt es bereits seit Flash MX das Prinzip der Skins, das auch noch in Flash MX 2004 genutzt wird:

Skins
gp  Skins (engl. für Haut) sind Grafik- oder Movieclip-Symbole. Komponenten verwenden diese Symbole zur Darstellung. In ihnen sind die Grafiken enthalten, die für das Aussehen der Komponente zuständig sind. Sie dürfen vorhandene Skins bearbeiten und neue Skins erstellen, um das Aussehen einer Komponente zu ändern.
Themes
gp  Sobald mehrere Komponenten auf einem festen Satz an Skins basieren, dann bezeichnet man diesen Satz als Theme (engl. für Thema). Um also alle Skins in einem Dokument durch neue Skins zu ersetzen, tauschen Sie das Thema aus. Das Standardthema für Flash MX 2004 und Flash MX Professional 2004 heißt übrigens Halo.
CSS-basierte Stile
gp  Die dritte Variante der Anpassung sind CSS-basierte Stile. Cascading Style Sheets (kurz CSS) und Komponenten funktionieren jedoch nur im Zusammenspiel mit dem Macromedia Framework für die Komponenten der zweiten Generation. Denn dort sind bereits alle notwendigen Methoden programmiert:
_global.style.setStyle("fontFamily", "Tahoma");
_global.style.setStyle("fontSize", "10");
_global.style.setStyle("color", 0xFF0000);
_global.style.setStyle("themeColor", "haloOrange");

Rheinwerk Design - Zum Seitenanfang

17.2.4 Programmierte Verwendung  downtop

Neben der eher visuellen Vorgehensweise bei dem Einsatz von Komponenten darf auch die Programmierung zur Erzeugung von Komponenten-Instanzen genutzt werden. Da es sich bei Komponenten im Kern um Movieclips handelt, kommen hier auch die gleichen Methoden wie bei Movieclips zum Einsatz.

Sobald ein Komponenten-Symbol in der Bibliothek mit einem Verknüpfungsnamen (engl. Linkage) versehen ist, kann die Komponente wie gewohnt über die Methode attachMovie dynamisch in einer Anwendung erzeugt werden:

// Symbol (Verknüpfungsname)
attachMovi.fla
var linkage:String = "Button";
// Instanzname
var instanceName:String = "button_mc";
// Tiefe
var depths:Number = 1;
// Erstelle Instanz
this.attachMovie(linkage, instanceName, depths);

Sobald Sie mit Komponenten der zweiten Generation arbeiten, stehen noch weitere Wege für die Erzeugung offen, sofern sich die Komponenten auch an Macromedias Architektur für die zweite Generation halten. Dies bedeutet, dass die Komponenten von der Klasse UIObject abgeleitet sein müssen – um genau zu sein von der Klasse mx.core.UIObject. Dann steht die Methode createObject zur Verfügung:

// Symbol (Verknüpfungsname)
createObject.fla
var linkage:String = "Button";
// Instanzname
var instanceName:String = "button_mc";
// Tiefe
var depths:Number = 1;
// Erstelle Instanz
this.createObject(linkage, instanceName, depths);
createClassObject

Noch einen kleinen Schritt weiter geht die Methode createClassObject der UIObject-Klasse. Diese benötigt nicht die Verknüpfung, sondern die Klasse als Angabe:

// Klasse
createClassObject.fla
var classObj:Function = mx.controls.Button;
// Instanzname
var instanceName:String = "button_mc";
// Tiefe
var depths:Number = 1;
// Erstelle Instanz
this.createClassObject(classObj, instanceName, depths);
createObject und createClassObject in Movieclips nutzen

Die beiden Methoden createObject und createClassObject stehen automatisch für alle Movieclips bereit, sobald eine Komponente der zweiten Generation verwendet wird. Es reicht aus, dass diese Komponente in der Bibliothek liegt.


Rheinwerk Design - Zum Seitenanfang

17.2.5 Vorbehalte  toptop

Macromedia bietet mit dem in Flash integrierten Framework namens »Components V2« (Komponenten der zweiten Generation) bereits eine umfangreiche Plattform zur Entwicklung von Anwendungen und deren Oberflächen. Doch dieses Rahmensystem genügt den Anforderungen vieler Projekte nicht. Aus diesem Grund ist es immer eine Überlegung wert, ob nicht auf die vorhandenen Strukturen verzichtet werden kann.

Solange es sich um den Entwurf eines Prototypen handelt oder eher kleine Anwendungen benötigt werden, sind die Komponenten eine sehr gute Wahl, da diese schnell zu ansprechenden Ergebnissen führen. Doch sobald entweder eine umfangreiche Anpassung erforderlich oder schwachbrüstige Zielrechner vorhanden sind, verlieren die Komponenten der zweiten Generation ihren Charme.

Performance

Die Ergebnisse verschiedener Performance-Tests zeigen, dass mit steigender Anzahl der Oberflächenelemente die Geschwindigkeit einer Anwendung rapide abnimmt. Verglichen mit selbst erstellten Komponenten ohne Zuhilfenahme des Macromedia Frameworks sind Leistungssteigerungen zwischen 30 bis 70 Prozent möglich.

Speicherplatz

Der Speicherplatzbedarf ist dabei deutlich weniger dramatisch als oft gedacht. Zwar benötigt bereits eine einfache Komponente einen Großteil des Frameworks und katapultiert die Dateigröße schnell über 100 KByte. Doch in der Praxis werden ohnehin mehrere Komponenten gleichzeitig verwendet, so dass die einzelnen Bestandteile des Frameworks nicht mehr ins Gewicht fallen.

Anpassung und Erweiterung

Ein mühsamer und manchmal frustrierender Prozess ist die Anpassung und Erweiterung der Komponenten. Zwar hat Macromedia die Dokumentation dazu mit dem Update auf Version 7.2 auf einen vernünftigen Stand gebracht, doch wirklich leicht geht das auch so noch immer nicht von der Hand. In erster Linie liegt das an der angestrebten Mächtigkeit der Komponenten: Bereits das Ändern einer einzigen Farbe passt zur Laufzeit das komplette Erscheinungsbild an. Die daraus resultierende Komplexität der Komponenten hat zu einem schwer durchschaubaren Programmcode geführt. Durchsuchen Sie doch den Programmcode der mitgelieferten Komponenten nach schwer lesbarem, redundantem oder sogar fehlerhaftem Code. Sehr beliebt bei den Entwicklern der Komponenten sind beispielsweise Zugriffe auf Eigenschaften über die eckigen Klammern. Anstelle von s["selectedRadio"].setState(false); hätte der Entwickler nämlich genauso gut s.selectedRadio.setState(false); schreiben können. Auf die Performance scheint dies zwar keinen Einfluss zu haben, aber auf die Lesbarkeit und Typsicherheit. Manche Entwickler machen sich das sogar absichtlich zunutze. Das Codefragment holder["addEventListener"] ("cuePoint", listener); aus einer Komponente für CuePoints funktioniert nämlich nur so, da die dort angegebene Methode überhaupt nicht in der zugrunde liegenden Klasse deklariert ist. Hier würde es bei einer anderen Schreibweise ausnahmsweise einen Typfehler geben. Und an anderen Stellen mit ähnlichen Problemen verzichten viele Entwickler kurzerhand auf eine Typisierung – da nützt auch ActionScript 2.0 nichts.

Ausblick

Aus den genannten Gründen finden Sie im Folgenden eine Erklärung, wie Sie Komponenten in Flash ohne die von Macromedia gelieferten Klassen erzeugen und so vielleicht zu einem performanteren, schlankeren und leichter wartbaren System gelangen. Schließlich kennen Sie ja meist auch die Anforderungen an Ihr Projekt und können so unnötige Teile der Effizienz zuliebe wegrationalisieren!

Alternativen

Macromedia hat erkannt, dass das eigens für Anwendungsentwickler erstellte Framework hinsichtlich Performance und Bandbreitenbedarf vielen Anforderungen nicht genügt, und eine grundsätzliche Überarbeitung für die nächste Flash-Version angekündigt. Aber bereits jetzt stehen Alternativen zu Verfügung:

gp  Der von Macromedia entwickelte Präsentationsserver Flex nutzt zur Darstellung ebenfalls Flash. Die Funktionalität des Flex Frameworks ist gegenüber den Components V2 deutlich erweitert worden, der umständliche Anpassungsprozess ist jedoch weiterhin kaum vermeidbar. Aufgrund der Lizenzkosten ab ca. € 14000 pro Server bietet sich Flex jedoch nur für große Projekte an!
gp  Der renommierte Entwickler Grant Skinner kündigte unter dem Namen GLIC (http://www.gskinner.com/glic/) ein eigenes Framework an, das die meisten Probleme mit Macromedias Framework ausmerzen und dennoch kompatibel zu diesem sein soll!
 << 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