Tutti i componenti ActionScript 3.0 ereditano dalla classe DisplayObject, quindi hanno accesso ai relativi metodi e proprietà per interagire con l'elenco di visualizzazione. L'
elenco di visualizzazione
è la rappresentazione gerarchica degli oggetti visualizzati e degli elementi visivi in un'applicazione e include i seguenti elementi:
-
Lo stage, che costituisce il contenitore di livello superiore.
-
Gli oggetti di visualizzazione, che includono forme, clip filmato, campi di testo e altri elementi.
-
I contenitori di oggetti di visualizzazione, ovvero tipi speciali di oggetti di visualizzazione che possono contenere oggetti di visualizzazione secondari.
L'ordine degli oggetti nell'elenco di visualizzazione ne determina la profondità nel contenitore principale. La profondità di un oggetto ne indica la posizione dall'alto verso il basso o dal primo piano allo sfondo nello stage o nel relativo contenitore di visualizzazione. L'ordine di profondità è evidente quando gli oggetti sono sovrapposti, ma esiste anche quando non lo sono. A ogni oggetto nell'elenco di visualizzazione corrisponde una profondità nello stage. Per modificare la profondità di un oggetto, posizionandolo in primo piano o sullo sfondo rispetto ad altri oggetti, dovete cambiarne la posizione nell'elenco di visualizzazione. L'ordine predefinito degli oggetti nell'elenco di visualizzazione corrisponde all'ordine in cui sono inseriti nello stage. La posizione 0 nell'elenco di visualizzazione corrisponde all'estremità inferiore dell'ordine di profondità.
Aggiungere un componente all'elenco di visualizzazione
Potete aggiungere un oggetto a un oggetto DisplayObjectContainer chiamando il metodo
addChild()
o
addChildAt()
del contenitore. Nel caso dello stage, potete inoltre aggiungere un oggetto al relativo elenco di visualizzazione creando l'oggetto durante la fase di creazione oppure, nel caso dei componenti, trascinando l'oggetto dal pannello Componenti nello stage. Per aggiungere un oggetto a un contenitore con ActionScript, create innanzitutto un'istanza dell'oggetto richiamando la relativa funzione di costruzione con l'operatore
new
, quindi chiamando il metodo
addChild()
o
addChildAt()
per inserire l'oggetto nello stage e nell'elenco di visualizzazione. Il metodo
addChild()
consente di inserire l'oggetto nella successiva posizione dell'elenco di visualizzazione, mentre l'oggetto
addChildAt()
specifica la posizione in cui aggiungere l'oggetto. Se specificate una posizione già occupata, l'oggetto presente in quella posizione e quelli nelle posizioni superiori vengono spostati verso l'alto di una posizione. La proprietà
numChildren
dell'oggetto DisplayObjectContainer specifica il numero di oggetti di visualizzazione contenuti. Potete recuperare un oggetto dall'elenco di visualizzazione chiamando il metodo
getChildAt()
e specificando la posizione oppure, se conoscete il nome dell'oggetto, chiamando il metodo
getChildByName()
.
Nota:
quando aggiungete un componente con ActionScript, dovete assegnare un nome alla relativa proprietà name se desiderate accedervi per nome nell'elenco di visualizzazione.
Nell'esempio seguente vengono visualizzati i nomi e le posizioni di tre componenti nell'elenco di visualizzazione. Trascinate innanzitutto un'istanza degli oggetti NumericStepper, Button e ComboBox nello stage in modo che si sovrappongano e assegnatevi i nomi di istanza
aNs
,
aButton
e
aCb
. Aggiungete il codice seguente nel pannello Azioni al fotogramma 1 nella linea temporale:
var i:int = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
Nel pannello Output dovrebbero essere visualizzate le seguenti righe:
aNs is at position: 0
aButton is at position: 1
aCb is at position: 2
Spostare un componente nell'elenco di visualizzazione
Potete cambiare la posizione di un oggetto nell'elenco di visualizzazione e la relativa profondità chiamando il metodo
addChildAt()
e specificando il nome dell'oggetto e la posizione in cui desiderate inserirlo come parametri del metodo. Ad esempio, aggiungete il seguente codice all'esempio precedente per posizionare l'oggetto NumericStepper nella posizione superiore e ripetete il ciclo per visualizzare le nuove posizioni del componente nell'elenco di visualizzazione:
this.addChildAt(aNs, numChildren - 1);
i = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
I dati seguenti devono essere visualizzati nel pannello Output:
aNs is at position: 0
aButton is at position: 1
aCb is at position: 2
aButton is at position: 0
aCb is at position: 1
aNs is at position: 2
Sullo schermo, l'oggetto NumericStepper dovrebbe inoltre essere visualizzato in primo piano rispetto agli altri componenti.
Notate che
numChildren
è il numero di oggetti (da 1 a
n
) nell'elenco di visualizzazione, mentre la prima posizione nell'elenco corrisponde a 0. Quindi, se nell'elenco sono presenti tre oggetti, la posizione di indice del terzo oggetto è 2. Ciò significa che potete fare riferimento all'ultima posizione nell'elenco di visualizzazione, ovvero l'oggetto di livello superiore in termini di profondità di visualizzazione, come
numChildren - 1
.
Rimuovere un componente dall'elenco di visualizzazione
Potete rimuovere un componente da un contenitore di oggetti di visualizzazione e dal relativo elenco di visualizzazione con i metodi
removeChild()
e
removeChildAt()
. Nell'esempio seguente vengono creati tre componenti Button sovrapposti nello stage e viene aggiunto un listener di eventi per ognuno di essi. Quando l'utente fa clic su ogni componente Button, questo viene rimosso dal gestore di eventi dall'elenco di visualizzazione e dallo stage.
-
Create un nuovo documento File Flash (ActionScript 3.0).
-
Trascinate un componente Button dal pannello Componenti al pannello Libreria.
-
Aprite il pannello Azioni, selezionate il fotogramma 1 nella linea temporale principale e aggiungete il codice seguente:
import fl.controls.Button;
var i:int = 0;
while(i++ < 3) {
makeButton(i);
}
function removeButton(event:MouseEvent):void {
removeChildAt(numChildren -1);
}
function makeButton(num) {
var aButton:Button = new Button();
aButton.name = "Button" + num;
aButton.label = aButton.name;
aButton.move(200, 200);
addChild(aButton);
aButton.addEventListener(MouseEvent.CLICK, removeButton);
}
Per una spiegazione completa dell'elenco di visualizzazione, vedete “Programmazione della visualizzazione” in
Programmazione in ActionScript 3.0
.
|
|
|