Flash CS3-Dokumentation |
|||
| Programmieren mit ActionScript 3.0 > Verwenden von Movieclips > Beispiel: RuntimeAssetsExplorer | |||
Die Funktion „Export für ActionScript" ist besonders nützlich bei Bibliotheken, die möglicherweise in mehreren Projekten verwendet werden. Die in ActionScript exportierten Symbole sind nicht nur in der entsprechenden SWF-Datei, sondern in allen SWF-Dateien in der gleichen Sicherheits-Sandbox verfügbar, in der sie geladen werden. Auf diese Weise kann in einem Flash-Dokument eine SWF-Datei erstellt werden, die nur zum Speichern grafischer Elemente dient. Dieses Verfahren eignet sich besonders für größere Projekte, bei denen Designer, die visuelle Elemente bearbeiten, parallel mit Entwicklern arbeiten, die eine „umhüllende" SWF-Datei erstellen, über die dann die SWF-Datei mit den grafischen Elementen zur Laufzeit geladen wird. Mit diesem Verfahren können Sie mehrere Dateiversionen verwalten, in denen grafische Elemente nicht vom Programmierfortschritt abhängen.
Mit der Anwendung „RuntimeAssetsExplorer" werden alle SWF-Dateien geladen, die Unterklassen der RuntimeAsset-Klasse sind. Mit dieser Anwendung können Sie zudem die verfügbaren Elemente dieser SWF-Dateien durchsuchen. Mit diesem Beispiel wird Folgendes veranschaulicht:
Loader.load()Beachten Sie zunächst, dass sich alle SWF-Dateien in der gleichen Sicherheits-Sandbox befinden müssen. Weitere Informationen finden Sie unter Sicherheits-Sandboxen.
Die Anwendungsdateien für dieses Beispiel finden Sie unter www.adobe.com/go/learn_programmingAS3samples_flash_de. Die Dateien der Anwendung „RuntimeAssetsExplorer" befinden sich im Ordner „Samples/RuntimeAssetsExplorer". Die Anwendung umfasst die folgenden Dateien:
|
Datei |
Beschreibung |
|---|---|
|
RuntimeAssetsExample.mxml oder RuntimeAssetsExample.fla |
Die Benutzeroberfläche der Anwendung im Flex-Format (MXML) oder Flash-Format (FLA). |
|
GeometricAssets.as |
Eine Beispielklasse für die Implementierung der RuntimeAsset-Schnittstelle. |
|
GeometricAssets.fla |
Eine FLA-Datei, die mit der GeometricAssets-Klasse verknüpft ist (die Dokumentklasse der FLA-Datei) und Symbole enthält, die in ActionScript exportiert werden. |
|
com/example/programmingas3/runtimeassetsexplorer/RuntimeLibrary.as |
Eine Schnittstelle, in der die erforderlichen Methoden aller SWF-Dateien mit Laufzeitelementen definiert sind, die im Explorer-Container geladen werden. |
|
com/example/programmingas3/runtimeassetsexplorer/AnimatingBox.as |
Die Klasse des Bibliothekssymbols in Form eines sich drehenden Feldes. |
|
com/example/programmingas3/runtimeassetsexplorer/AnimatingStar.as |
Die Klasse des Bibliothekssymbols in Form eines sich drehenden Sterns. |
Damit über den Explorer ordnungsgemäß auf eine SWF-Bibliothek zugegriffen werden kann, muss die Struktur der Laufzeit-Elementbibliotheken formalisiert werden. Dies erfolgt durch Erstellen einer Schnittstelle. Diese ähnelt einer Klasse, da sie einen Entwurf der Methoden enthält und die zu erwartende Struktur festlegt. Im Gegensatz zu einer Klasse wird jedoch nicht der Methodenrumpf angegeben. Über die Schnittstelle kann eine Verbindung zwischen der Laufzeitbibliothek und dem Explorer hergestellt werden. Jede SWF-Datei mit Laufzeitelementen, die im Browser geladen wird, implementiert diese Schnittstelle. Weitere Informationen zu Schnittstellen und deren Verwendungsmöglichkeiten finden Sie unter Schnittstellen.
Die RuntimeLibrary-Schnittstelle ist sehr einfach. Es wird lediglich eine Funktion benötigt, über die im Explorer ein Array mit Klassenpfaden verfügbar ist, damit die Symbole exportiert werden und in der Laufzeitbibliothek zur Verfügung stehen. Zu diesem Zweck enthält die Schnittstelle eine einzige Methode: die getAssets()-Methode.
package com.example.programmingas3.runtimeassetexplorer
{
public interface RuntimeLibrary
{
function getAssets():Array;
}
}
Mit der Definition der RuntimeLibrary-Schnittstelle können mehrere SWF-Dateien für die Elementbibliothek erstellt werden, die in einer anderen SWF-Datei geladen werden können. Die Erstellung einer SWF-Datei für die Elementbibliothek umfasst vier Aufgaben:
Im Folgenden wird die GeometricAssets-Klasse erstellt, mit der die RuntimeLibrary-Schnittstelle implementiert wird. Dabei handelt es sich um die Dokumentklasse der FLA-Datei. Der Code für diese Klasse ähnelt dem Code für die RuntimeLibrary-Schnittstelle mit dem Unterschied, dass in der Klassendefinition der getAssets()-Methode der Methodenrumpf angegeben ist.
package
{
import flash.display.Sprite;
import com.example.programmingas3.runtimeassetexplorer.RuntimeLibrary;
public class GeometricAssets extends Sprite implements RuntimeLibrary
{
public function GeometricAssets() {
}
public function getAssets():Array {
return [ "com.example.programmingas3.runtimeassetexplorer.AnimatingBox",
"com.example.programmingas3.runtimeassetexplorer.AnimatingStar" ];
}
}
}
Im Fall der Erstellung einer zweiten Laufzeitbibliothek kann eine weitere FLA-Datei auf der Grundlage einer anderen Klasse (z. B. AnimationAssets) erstellt werden, die wiederum eine eigene Implementierung von getAssets() enthält.
In diesem Beispiel wird die MovieClip-Klasse lediglich erweitert, ohne dass weitere Funktionen zu den benutzerdefinierten Elementen hinzugefügt werden. Der folgende Code für AnimatingStar ist analog zum Code für AnimatingBox:
package com.example.programmingas3.runtimeassetexplorer
{
import flash.display.MovieClip;
public class AnimatingStar extends MovieClip
{
public function AnimatingStar() {
}
}
}
Die MovieClip-Elemente werden nun mit der neuen Klasse verknüpft. Dazu wird eine neue FLA-Datei erstellt und im Eigenschafteninspektor im Feld „Dokumentklasse" die Klasse „GeometricAssets" eingegeben. In diesem Beispiel werden zwei einfache Formen erstellt, die mit einem Zeitleisten-Tween über 360 Bilder einmal im Uhrzeigersinn gedreht werden. Für die beiden Symbole animatingBox und animatingStar wird die Option „Export für ActionScript" aktiviert und im Feld „Klasse" jeweils der entsprechende in der getAssets()-Implementierung angegebene Klassenpfad eingegeben. Die Standardbasisklasse von flash.display.MovieClip wird beibehalten, da Unterklassen der MovieClip-Standardmethoden erstellt werden sollen.
Legen Sie die Exporteinstellungen für das Symbol fest, und veröffentlichen Sie dann die FLA-Datei. Damit ist die erste Laufzeitbibliothek erstellt. Diese SWF-Datei kann beispielsweise in einer anderen AVM2-SWF-Datei geladen werden. Das AnimatingBox-Symbol und das AnimatingStar-Symbol sind dann in der neuen SWF-Datei verfügbar.
In einem letzten Schritt muss die Benutzeroberfläche für den Elemente-Explorer erstellt werden. In diesem Beispiel ist der Pfad für die Laufzeitbibliothek in der Variablen ASSETS_PATH fest vorgegeben. Alternativ können Sie mithilfe der FileReference-Klasse beispielsweise eine Benutzeroberfläche erstellen, über die nach einer bestimmten SWF-Datei auf der Festplatte gesucht wird.
Nach dem erfolgreichen Laden der Laufzeitbibliothek wird die runtimeAssetsLoadComplete()-Methode in Flash Player aufgerufen:
private function runtimeAssetsLoadComplete(event:Event):void
{
var rl:* = event.target.content;
var assetList:Array = rl.getAssets();
populateDropdown(assetList);
stage.frameRate = 60;
}
In dieser Methode wird die geladene SWF-Datei durch die Variable rl repräsentiert. Im Code wird die getAssets()-Methode der geladenen SWF-Datei aufgerufen und damit die Liste der verfügbaren Elemente abgerufen. Anhand dieser Elemente wird durch Aufrufen der populateDropDown()-Methode eine ComboBox-Komponente mit der Liste verfügbarer Elemente gefüllt. Mit dieser Methode wird wiederum der vollständige Klassenpfad jedes Elements gespeichert. Durch Klicken auf die Schaltfläche „Add" der Benutzeroberfläche wird die addAsset()-Methode ausgelöst:
private function addAsset():void
{
var className:String = assetNameCbo.selectedItem.data;
var AssetClass:Class = getDefinitionByName(className) as Class;
var mc:MovieClip = new AssetClass();
...
}
Dadurch wird der Klassenpfad des derzeit in der ComboBox-Komponente (assetNameCbo.selectedItem.data) ausgewählten Elements sowie mithilfe der getDefinitionByName()-Funktion (aus dem flash.utils-Paket) ein Verweis auf die Klasse des Elements abgerufen, sodass eine neue Instanz des Elements erstellt wird.
Flash CS3
Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht
Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000217.html