Esportazione dei simboli della libreria per ActionScript

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Per impostazione predefinita, le istanze dei simboli di clip filmato nella libreria di un documento Flash non possono essere create in modo dinamico (cioè solo mediante ActionScript), perché ogni simbolo che viene esportato per l'utilizzo in ActionScript viene aggiunto alle dimensioni del file SWF, e non tutti i simboli sono destinati all'uso sullo stage. Per tale motivo, per poter rendere un simbolo disponibile in ActionScript, dovete specificare che deve essere esportato per ActionScript.

Per esportare un simbolo per ActionScript:

  1. Selezionate il simbolo nel pannello Libreria e aprire la finestra di dialogo delle proprietà del simbolo.

  2. Se necessario, attivate le impostazioni avanzate.

  3. Nella sezione Concatenamento, selezionate Esporta per ActionScript.

    In questo modo vengono attivati i campi Classe e Classe base.

    Per impostazione predefinita, il campo Classe viene compilato con il nome del simbolo, senza spazi (ad esempio, un simbolo denominato “Tree House” diventa “TreeHouse”). Per specificare che il simbolo deve utilizzare una classe personalizzata per il proprio comportamento, immettete nel campo il nome completo della classe, compreso il relativo pacchetto. Se desiderate poter creare delle istanze del simbolo in ActionScript ma non dovete aggiungere alcun comportamento aggiuntivo, potete lasciare invariato il nome della classe.

    Il valore predefinito del campo Classe base è flash.display.MovieClip . Se desiderate che il simbolo estenda la funzionalità di un'altra classe personalizzata, potete specificare il nome di tale classe, a condizione che estenda la classe Sprite (o MovieClip).

  4. Fate clic su OK per salvare le modifiche.

    A questo punto, se Flash non riesce a trovare un file SWC collegato o un file ActionScript esterno con una definizione della classe specificata (ad esempio, se non è necessario aggiungere dei comportamenti supplementari per il simbolo), viene visualizzato un avviso:

    Impossibile trovare una definizione per questa classe nel percorso di classe. Ne verrà generata una automaticamente nel file SWF al momento dell'esportazione.

    Potete ignorare l'avviso se il simbolo della libreria non richiede altre funzionalità oltre a quella della classe MovieClip.

Se non fornite una classe per il simbolo, Flash crea una classe per il simbolo equivalente alla seguente:

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

Se desiderate aggiungere delle funzionalità ActionScript supplementari al simbolo, aggiungete le proprietà e i metodi appropriati alla struttura di codice sottostante. Ad esempio, supponete che il simbolo di un clip filmato contenga un cerchio con una larghezza di 50 pixel e un'altezza di 50 pixel e che per il simbolo sia stata specificata l'esportazione per ActionScript con una classe di nome Circle. Il codice seguente, quando viene incluso in un file Circle.as, estende la classe MovieClip e fornisce al simbolo i metodi aggiuntivi getArea() e getCircumference() :

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

Il codice seguente, posizionato in un fotogramma chiave sul fotogramma 1 del documento Flash, crea un'istanza del simbolo e la visualizza sullo schermo:

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

Questo codice dimostra la creazione di istanze basata su ActionScript come alternativa al trascinamento delle singole risorse sullo stage. Crea un cerchio che ha tutte le proprietà di un clip filmato e i metodi personalizzati definiti nella classe Circle. L'esempio presentato è molto semplice, ma il simbolo della libreria può specificare un numero infinito di proprietà e metodi nella propria classe.

La creazione di istanze basate su ActionScript è uno strumento molto potente, poiché consente di creare dinamicamente grandi quantità di istanze che sarebbe noioso organizzare manualmente. Inoltre è molto flessibile, poiché consente di personalizzare le proprietà di ogni istanza nel momento in cui quest'ultima viene creata. Questi vantaggi sono evidenti se ad esempio utilizzate un ciclo per creare dinamicamente diverse istanze di Circle. Con il simbolo e la classe Circle descritti in precedenza nella libreria del documento Flash, collocate il codice seguente in un fotogramma chiave sul fotogramma 1:

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); 
}

L'esempio precedente mostra come creare e personalizzare rapidamente più istanze di un simbolo utilizzando il codice. Ogni istanza viene posizionata in base al conteggio corrente all'interno del ciclo, e a ogni istanza viene assegnato un colore casuale impostandone la proprietà transform (che Circle eredita estendendo la classe MovieClip).