Exportieren von Bibliothekssymbolen für ActionScript

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Standardmäßig können Instanzen von Movieclip-Symbolen in der Bibliothek eines Flash-Dokuments nicht dynamisch (d. h. nur mit ActionScript) erstellt werden. Das liegt daran, dass jedes Symbol, das zur Verwendung in ActionScript exportiert wird, zur Vergrößerung der SWF-Datei beiträgt und dass einige Symbole möglicherweise nicht zur Verwendung auf der Bühne vorgesehen sind. Aus diesem Grund muss angegeben werden, dass ein Symbol in ActionScript exportiert werden soll, damit dieses Symbol in ActionScript zur Verfügung steht.

So exportieren Sie ein Symbol für ActionScript:

  1. Wählen Sie das Symbol im Bedienfeld „Bibliothek“ aus und öffnen Sie das entsprechende Dialogfeld „Symboleigenschaften“.

  2. Aktivieren Sie gegebenenfalls die erweiterten Einstellungen.

  3. Aktivieren Sie im Bereich „Verknüpfung“ das Kontrollkästchen „Export für ActionScript“.

    Dadurch werden die Felder „Klasse“ und „Basisklasse“ aktiviert.

    In der Standardeinstellung wird im Feld „Klasse“ der Symbolname übernommen, die Leerzeichen werden dabei entfernt (der Symbolname „Tree House“ wird beispielsweise in „TreeHouse“ geändert). Wenn Sie angeben möchten, dass das Verhalten des Symbols mit einer benutzerdefinierten Klasse festgelegt werden soll, geben Sie in diesem Feld den vollständigen Namen der entsprechenden Klasse mit Angabe des zugehörigen Pakets an. Wenn Sie Instanzen des Symbols in ActionScript erstellen, jedoch kein weiteres Verhalten hinzufügen möchten, können Sie den Klassennamen beibehalten.

    Im Feld „Basisklasse“ ist automatisch der Wert flash.display.MovieClip eingetragen. Wenn das Symbol um die Funktionen einer anderen benutzerdefinierten Klasse erweitert werden soll, können Sie stattdessen den Namen der entsprechenden Klasse eingeben. Diese Klasse muss die Sprite-Klasse (oder MovieClip-Klasse) erweitern.

  4. Klicken Sie auf die Schaltfläche „OK“, um die Änderungen zu speichern.

    Wenn zu diesem Zeitpunkt in Flash keine verknüpfte SWC-Datei oder eine externe ActionScript-Datei mit einer Definition der angegebenen Klasse gefunden wird (wenn Sie beispielsweise kein weiteres Verhalten für das Symbol angegeben haben), wird die folgende Warnmeldung angezeigt:

    Im Klassenpfad konnte keine Definition für diese Klasse gefunden werden, daher wird in der SWF-Datei beim Export automatisch eine generiert.

    Sie können diese Warnmeldung ignorieren, wenn für das entsprechende Bibliothekssymbol zusätzlich zu den Funktionen der MovieClip-Klasse keine weiteren eindeutigen Funktionen erforderlich sind.

Wenn Sie keine Klasse für das Symbol angeben, wird in Flash eine Klasse erstellt, die der folgenden Klasse entspricht:

package 
{ 
    import flash.display.MovieClip; 
     
    public class ExampleMovieClip extends MovieClip 
    { 
        public function ExampleMovieClip() 
        { 
        } 
    } 
}

Wenn das Symbol über erweiterte ActionScript-Funktionen verfügen soll, fügen Sie die entsprechenden Eigenschaften und Methoden zur folgenden Codestruktur hinzu. Beispiel: Bei einem Movieclip-Symbol mit einem Kreis mit einer Breite und Höhe von 50 Pixel ist die Option „Export für ActionScript“ aktiviert und als Circle-Klasse angegeben. Durch Einfügen des folgenden Codes in die Datei „Circle.as“ werden die MovieClip-Klasse erweitert und das Symbol mit den zusätzlichen Methoden getArea() und getCircumference() versehen:

package  
{ 
    import flash.display.MovieClip; 
     
    public class Circle extends MovieClip 
    { 
        public function Circle() 
        { 
        } 
         
        public function getArea():Number 
        { 
        // The formula is Pi times the radius squared. 
        return Math.PI * Math.pow((width / 2), 2); 
        } 
         
        public function getCircumference():Number 
        { 
        // The formula is Pi times the diameter. 
        return Math.PI * width; 
        } 
    } 
}

Mit dem folgenden Code, der in einem Schlüsselbild in Bild 1 des Flash-Dokuments eingefügt wird, wird eine Instanz des Symbols erstellt und auf dem Bildschirm angezeigt:

var c:Circle = new Circle(); 
addChild(c); 
trace(c.width); 
trace(c.height); 
trace(c.getArea()); 
trace(c.getCircumference());

Mit diesem Code wird die ActionScript-Instanziierung als Alternative zum Ziehen einzelner Elemente auf die Bühne veranschaulicht. Es wird ein Kreis erstellt, der über alle Eigenschaften eines Movieclips und zusätzlich über die benutzerdefinierten Methoden verfügt, die in der Circle-Klasse definiert sind. Hierbei handelt es sich um ein sehr einfaches Beispiel. In der Klasse eines Bibliothekssymbols können beliebig viele Eigenschaften und Methoden festgelegt werden.

Die ActionScript-Instanziierung ist sehr leistungsstark, da Sie eine große Anzahl Instanzen dynamisch erstellen können, deren manuelle Anordnung ein sehr langwieriges Unterfangen darstellt. Diese Instanziierung ist zudem flexibel, da Sie die Eigenschaften jeder Instanz beim Erstellen anpassen können. Diese Vorteile machen sich bemerkbar, wenn mehrere Circle-Instanzen mithilfe einer Schleife dynamisch erstellt werden. Wenn sich das zuvor beschriebene Circle-Symbol und die Circle-Klasse in der Bibliothek des Flash-Dokuments befinden, fügen Sie den folgenden Code in einem Schlüsselbild in Bild 1 ein:

import flash.geom.ColorTransform; 
 
var totalCircles:uint = 10; 
var i:uint; 
for (i = 0; i < totalCircles; i++) 
{ 
    // Create a new Circle instance. 
    var c:Circle = new Circle(); 
    // Place the new Circle at an x coordinate that will space the circles 
    // evenly across the Stage. 
    c.x = (stage.stageWidth / totalCircles) * i; 
    // Place the Circle instance at the vertical center of the Stage. 
    c.y = stage.stageHeight / 2; 
    // Change the Circle instance to a random color 
    c.transform.colorTransform = getRandomColor(); 
    // Add the Circle instance to the current timeline. 
    addChild(c); 
} 
 
function getRandomColor():ColorTransform 
{ 
    // Generate random values for the red, green, and blue color channels. 
    var red:Number = (Math.random() * 512) - 255; 
    var green:Number = (Math.random() * 512) - 255; 
    var blue:Number = (Math.random() * 512) - 255; 
     
    // Create and return a ColorTransform object with the random colors. 
    return new ColorTransform(1, 1, 1, 1, red, green, blue, 0); 
}

Hierdurch wird veranschaulicht, wie Sie im Code schnell mehrere Instanzen eines Symbols erstellen und anpassen können. Jede Instanz wird anhand des aktuellen Werts des Schleifenzählers positioniert und erhält über die transform -Eigenschaft (die die Circle-Klasse durch Erweiterung der MovieClip-Klasse erbt) eine zufällig gewählte Farbe.