Vantaggi dell'elenco di visualizzazione

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

In ActionScript 3.0 vi sono classi separate per vari tipi di oggetti di visualizzazione. In ActionScript 1.0 e 2.0, molti oggetti dello stesso tipo sono inclusi tutti in un'unica classe: MovieClip.

Una tale individualizzazione delle classe e la struttura gerarchica degli elenchi di visualizzazione presentano i seguenti vantaggi:

  • Rendering più efficiente e impiego della memoria ridotto

  • Gestione della profondità migliorata

  • Ricerca completa dell'elenco di visualizzazione

  • Oggetti di visualizzazione fuori elenco

  • Creazione più agevole di sottoclassi degli oggetti di visualizzazione

Rendering più efficiente e file di dimensioni inferiori

In ActionScript 1.0 e 2.0, è possibile disegnare forme solo all'interno di oggetti MovieClip. ActionScript 3.0 offre classi di oggetti di visualizzazione più semplici nelle quali è possibile disegnare forme. Poiché queste classi di oggetti di visualizzazione di ActionScript 3.0 non includono la serie completa dei metodi e delle proprietà incluse negli oggetti MovieClip, l'impiego della memoria e delle risorse risulta più contenuto.

Ogni oggetto MovieClip include, ad esempio, proprietà per la linea temporale del clip filmato, mentre l'oggetto Shape non le contiene. Le proprietà per la gestione della linea temporale possono richiedere grandi quantità di memoria e di risorse del processore. In ActionScript 3.0, l'uso dell'oggetto Shape consente di ottimizzare le risorse del sistema, in quanto è molto meno complesso dell'oggetto MovieClip. Flash Player e AIR non richiedono la gestione di proprietà MovieClip inutilizzate, con conseguenti miglioramenti in termini di velocità e di impiego della memoria da parte degli oggetti.

Gestione della profondità migliorata

In ActionScript 1.0 e 2.0, la profondità viene gestita mediante uno schema di gestione della profondità lineare e metodi quale getNextHighestDepth() .

ActionScript 3.0 include la classe DisplayObjectContainer, che presenta metodi e proprietà più pratici per la gestione della profondità e degli oggetti di visualizzazione.

In ActionScript 3.0, se un oggetto di visualizzazione viene spostato in una nuova posizione nell'elenco secondario di un'istanza di DisplayObjectContainer, gli altri elementi secondari presenti nel contenitore degli oggetti di visualizzazione vengono automaticamente riposizionati e reindicizzati all'interno del contenitore.

Inoltre, in ActionScript 3.0 è sempre possibile scoprire tutti gli oggetti secondari di un contenitore di oggetti di visualizzazione. Ogni istanza di DisplayObjectContainer presenta una proprietà numChildren che elenca il numero di elementi secondari presenti nel contenitore degli oggetti di visualizzazione. Poiché inoltre l'elenco secondario di un contenitore di oggetti di visualizzazione è sempre un elenco indicizzato, è possibile esaminare ogni singolo oggetto dell'elenco dalla posizione di indice 0 fino all'ultima posizione ( numChildren - 1 ). Ciò non è supportato dai metodi e dalle proprietà degli oggetti MovieClip in ActionScript 1.0 e 2.0.

In ActionScript 3.0, gli elenchi di visualizzazione possono essere letti in modo sequenziale senza alcuna difficoltà, in quanto non vi sono spazi vuoti tra i numeri di indice degli elenchi secondari di contenitori di oggetti di visualizzazione. Leggere gli elenchi di visualizzazione e gestire la profondità degli oggetti è ora molto più semplice e immediato rispetto a ActionScript 1.0 e 2.0. In ActionScript 1.0 e 2.0, un clip filmato può contenere oggetti con spazi intermittenti nell'ordine di profondità che rende difficoltosa la lettura dell'elenco degli oggetti. In ActionScript 3.0, ogni elenco secondario di un contenitore di oggetti di visualizzazione è inserito internamente in una cache come un array, consentendo operazioni di ricerca (per indice) molto più rapide. Anche la ripetizione ciclica di tutti gli elementi secondari di un contenitore di oggetti di visualizzazione risulta molto veloce.

In ActionScript 3.0, è possibile inoltre accedere agli elementi secondari di un contenitore di oggetti di visualizzazione mediante il metodo getChildByName() della classe DisplayObjectContainer.

Ricerca completa dell'elenco di visualizzazione

In ActionScript 1.0 e 2.0, non è possibile accedere ad alcuni oggetti, quali forme vettoriali, disegnate nello strumento di creazione di Flash. In ActionScript 3.0, è possibile accedere a tutti gli oggetti presenti nell'elenco di visualizzazione, sia quelli creati in ActionScript che quelli realizzati con lo strumento di creazione di Flash. Per maggiori dettagli, vedete la sezione Lettura dell'elenco di visualizzazione .

Oggetti di visualizzazione fuori elenco

In ActionScript 3.0, è possibile creare oggetti non visibili nell'elenco di visualizzazione. Tali oggetti sono conosciuti come oggetti di visualizzazione fuori elenco . Un oggetto di visualizzazione viene inserito nell'elenco degli oggetti di visualizzazione visibili solo chiamando il metodo addChild() o addChildAt() di un'istanza di DisplayObjectContainer già inserita nell'elenco di visualizzazione.

Potete utilizzare gli oggetti di visualizzazione fuori elenco per assemblare oggetti di visualizzazione complicati, quali oggetti che presentano contenitori di oggetti di visualizzazione multipli contenenti più oggetti di visualizzazione. Mantenendo oggetti di visualizzazione fuori dall'elenco, potete assemblare oggetti complicati senza che siano necessari i tempi di elaborazione normalmente richiesti per eseguire il rendering di tali oggetti. Potete, quindi, inserire gli oggetti di visualizzazione fuori elenco nell'elenco di visualizzazione quando necessario. Inoltre, potete spostare un elemento secondario di un contenitore di oggetti di visualizzazione fuori e dentro l'elenco di visualizzazione e in qualsiasi posizione dell'elenco in base alle necessità.

Creazione più agevole di sottoclassi degli oggetti di visualizzazione

In ActionScript 1.0 e 2.0, è necessario inserire spesso nuovi oggetti MovieClip in un file SWF per creare forme di base o per visualizzare bitmap. In ActionScript 3.0, la classe DisplayObject include numerose sottoclassi incorporate, quali Shape e Bitmap. Poiché le classi in ActionScript 3.0 sono più specifiche in base ai tipi di oggetti, la creazione di sottoclassi di base delle classi incorporate risulta più semplice.

Per disegnare, ad esempio, un cerchio in ActionScript 2.0, potete creare una classe CustomCircle che estenda la classe MovieClip ogni volta che viene creata un'istanza di un oggetto della classe personalizzata. Tuttavia, tale classe include anche una serie di proprietà e metodi della classe MovieClip (quale totalFrames ) non strettamente applicabili alla classe stessa. In ActionScript 3.0, potete invece creare una classe CustomCircle che estende l'oggetto Shape e che non include le proprietà e i metodi ad essa non pertinenti contenuti nella classe MovieClip. Nel codice riportato di seguito è illustrato un esempio di classe CustomCircle:

import flash.display.*; 
 
public class CustomCircle extends Shape 
{ 
    var xPos:Number; 
    var yPos:Number; 
    var radius:Number; 
    var color:uint; 
    public function CustomCircle(xInput:Number,  
                                        yInput:Number,  
                                        rInput:Number,  
                                        colorInput:uint) 
    { 
        xPos = xInput; 
        yPos = yInput; 
        radius = rInput; 
        color = colorInput; 
        this.graphics.beginFill(color); 
        this.graphics.drawCircle(xPos, yPos, radius); 
    } 
}