L'invio di un clip filmato a un nuovo fotogramma è un'operazione molto semplice. Se chiamate
gotoAndPlay()
o
gotoAndStop()
, il clip filmato passa al numero di fotogramma specificato come parametro. In alternativa, è possibile passare una stringa che corrisponde al nome dell'etichetta di fotogramma. Potete assegnare un'etichetta a qualunque fotogramma sulla linea temporale. A tale scopo, selezionate un fotogramma sulla linea temporale, quindi immettete un nome nel campo Etichetta fotogramma della finestra di ispezione Proprietà.
I vantaggi dell'utilizzo delle etichette di fotogramma anziché dei numeri sono particolarmente evidenti quando si crea un clip filmato complesso. Quando il numero di fotogrammi, livelli e interpolazioni in un'animazione diventa piuttosto elevato, è opportuno considerare di assegnare delle etichette ai fotogrammi più importanti con delle descrizioni eloquenti che rappresentino delle variazioni nel comportamento del clip filmato (ad esempio, “off”, “walking” o “running”). In questo modo si migliora la leggibilità del codice e si fornisce maggiore flessibilità, dal momento che le chiamate ActionScript utilizzate per passare a un fotogramma con un'etichetta sono dei puntatori a un singolo riferimento (l'etichetta) anziché a un numero di fotogramma specifico. Se successivamente decidete di spostare un segmento particolare dell'animazione in un fotogramma diverso, non è necessario modificare il codice ActionScript fintanto che si conserva la stessa etichetta per i fotogrammi nella nuova posizione.
Per rappresentare le etichette di fotogramma nel codice, ActionScript 3.0 include la classe FrameLabel. Ogni istanza di questa classe rappresenta una singola etichetta di fotogramma e ha una proprietà
name
che rappresenta il nome dell'etichetta di fotogramma specificato nella finestra di ispezione Proprietà e una proprietà
frame
che rappresenta il numero di fotogramma del fotogramma della linea temporale in cui si trova l'etichetta.
Per poter accedere alle istanze FrameLabel associate a un'istanza di clip filmato, la classe MovieClip include due proprietà che restituiscono direttamente degli oggetti FrameLabel. La proprietà
currentLabels
restituisce un array che è composto da tutti gli oggetti FrameLabel presenti sull'intera linea temporale di un clip filmato. La proprietà
currentLabel
restituisce una stringa contenente il nome dell'etichetta di fotogramma rilevato lungo la linea temporale.
Supponente di aver creato un clip filmato di nome
robot
e di aver assegnato delle etichette ai suoi vari stati di animazione. È possibile impostare una condizione che verifica la proprietà
currentLabel
per accedere allo stato corrente di robot, come nel codice seguente:
if (robot.currentLabel == "walking")
{
// do something
}
In Flash Player 11.3 e AIR 3.3 è stato aggiunto l'evento
frameLabel
alla classe FrameLabel. Potete assegnare un gestore di eventi all'istanza FrameLabel che rappresenta un'etichetta di fotogramma. L'evento viene inviato quando l'indicatore di riproduzione entra nel fotogramma.
Nell'esempio seguente viene creata un'istanza FrameLabel per la seconda etichetta di fotogramma nell'array di etichette dell'oggetto MovieClip. Quindi viene registrato un gestore di eventi per l'evento
frameLabel
:
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}