L'oggetto Stage
A grande richiesta, ho deciso di scrivere un tutorial che sarà diviso in varie parti, date le molteplici facce dell'argomento. Oggetto della discussione sarà il famigerato oggetto Stage, introdotto dalla versione MX.
Premessa: ha senso utilizzare questo oggetto solo in
filmati pubblicati in pagine html con width e height del
filmato settati in percentuale, o comunque variabili.
nel caso di un filmato pubblicato a dimensione fissa
infatti, tutti i vantaggi derivanti da questo oggetto vengono
a cadere...ed ora spiegheremo perchè.
Stage.ScaleMode
E' la proprietà dell'oggetto stage che
overrida le impostazioni di pubblicazione: funziona in tutto
e per tutto come l'attributo scale nelle impostazioni di
pubblicazione dell'html, ovvero può essere settato
a "exactFit" , "showAll" ,
"noBorder" e "noScale" (valore di default
"showAll"). Ma, come ho detto prima, overrida
(ovvero sovrascrive) quanto impostato nella pubblicazione, e
ha il vantaggio di poter essere utilizzato anche nei
proiettori (dove l'html non c'è).
Per i fini del nostro tutorial, scriviamo sul primo frame della timeline di un fla bello nuovo di dimensioni 600*400
Codice:
Stage.scaleMode = "noScale"
Ci servirà in seguito...
Stage.align
Questa proprietà è forse la piu
delicata...fate molta attenzione. Di default,
l'allineamento dell'swf è centrato sia
inorizzontale che in verticale. Supponendo che il nostro
filmato di test contenga un rettangolo grande come il filmato
(600*300).
Se pubblicassimo ora il filmato, senza specificare questa
proprietà, (con impostazioni di dimensione al 100%
nell'html e bordi della pagina settati a 0 nel body)
vedremmo il nostro rettangolo SEMPRE al centro della pagina,
e mai scalato.
Da qui la nostra prima conclusione...
Se all'interno del fla importassimo uno sfondo ipotetico
2000*2000, e lo centrassimo nella pagina...avremmo uno sfondo
in flash che "riempie" la pagina a qualunque
risoluzione lasciando il contenuto del filmato sempre al
centro.
Tutto quanto detto fino ad ora...porta inevitabilmente ad
una osservazione sulle coordinate all'interno dello
stage. dove si trova la coordinata 0,0? Sempre in alto a
sinistra? No...
Ovvero: supponiamo che la nostra finestra html sia
1000*800...la coordinata 0,0 sarà 200 pixels a destra
rispetto al bordo della pagina e 100 pixels più
giù rispetto al bordo superiore.
Ecco un'immagine per capire meglio.

Avrete intuito che Stage.align funziona con le iniziali dei
vari allineamenti possibili:
T sta per TOP, L per left, TR TOP+RIGHT e via cosi...
Ci preoccupa di piu il fatto che, visivamente, le coordinate
0,0 cambiano (giustamente) a seconda dell'impostazione
scelta.
Il consiglio, nonchè la procedura che utilizzeremo,
andrà in due direzioni separate:
1 - lasciare Stage.align al suo valore di default.
2- modificarlo in "TL" , per poter avere le
coordinate 0,0 sempre in alto a sinistra.
Nulla vi vieta in casi specifici di utilizzare qualunque
altro tipo di allineamento.
Nella seconda parte del tutorial, vedremo come, attraverso
l'uso di Stage.width e Stage.height (che leggono a
runtime larghezza e altezza del filmato) combinato con un
apposito LISTENER, potremo arrivare a simulare tipici
comportamenti di allineamento/scala/riposizionamento
proporzionale alle dimensioni visualizzate delle pagine html,
ma all in flash.