Grazie per la spiegazione.
Ho provato ad utilizzare questa funzione tratta dal manuale:
codice:
function traceDisplayList(container: DisplayObjectContainer, indentString:String = ""):void
{
var child: DisplayObject;
for (var i:uint=0; i < container.numChildren; i++)
{
child = container.getChildAt(i);
trace(indentString, child, child.name);
if (container.getChildAt(i) is DisplayObjectContainer)
{
traceDisplayList(DisplayObjectContainer(child), indentString + " ")
}
}
}
è molto comoda perchè elenca tutti gli elementi all'interno di un DisplayObjectContainer.
Ho inserito un semplice simbolo immagine sullo stage (simbolo immagine e non l'immagine importata).
La prima cosa che mi risulta strana è che se richiamo la funzione così:
traceDisplayList (this);
restituisce solo gli elementi inseriti sullo stage mettendoli al primo livello:
[object Shape] instance1
se invece la richiamo così:
traceDisplayList (this.stage);
oppure così:
traceDisplayList (stage);
restituisce la timeline al primo livello e gli oggetti sullo stage al secondo livello:
[object MainTimeline] root1
[object Shape] instance1
Questo mi sembra strano perchè essendo this al di sopra di stage dovrebbe essere this a contenere la timeline e stage a contenere solo gli elementi dentro lo stage.
La seconda stranezza è che il simbolo immagine non è di tipo Bitmap ma di tipo Shape.
La terza e ultima stranezza è che se volessi impostare una variabile sul richiamo al simbolo immagine, facendo:
var miaImmagine:Shape = new Shape();
miaImmagine = this.getChildAt(0);
non funziona, anche se this.getChildAt(0) è dello stesso tipo, richiede comunque l'assegnazione forzata:
var miaImmagine:Shape = new Shape();
miaImmagine = Shape(this.getChildAt(0));
così funziona.