Att skicka ett filmklipp till en ny bildruta är enkelt. Genom att anropa antingen
gotoAndPlay()
eller
gotoAndStop()
får du filmklippet att hoppa till det bildrutenummer som anges i en parameter. Alternativt kan du skicka en sträng som matchar namnet på en bildruteetikett. Alla bildrutor i tidslinjen kan tilldelas en etikett. Det gör du genom att välja en bildruta på tidslinjen och sedan ange ett namn i fältet Bildruteetikett i egenskapsinspektören.
Fördelarna med att använda bildruteetiketter i stället för nummer blir särskilt uppenbart när du skapar komplexa filmklipp. När antalet bildrutor, lager och interpoleringar blir stort i en animering, bör du överväga att sätta etiketter med förklarande beskrivningar på viktiga bildrutor som representerar ändrat beteende i filmklippet (t.ex. ”av”, ”gå” eller ”springa”). Det förbättrar kodens läsbarhet och ger även flexibilitet eftersom ActionScript-anrop som går till en bildruteetikett är pekare till en enstaka referens, etiketten, i stället för ett visst bildrutenummer. Om du senare bestämmer dig för att flytta ett visst segment av animeringen till en annan bildruta, behöver du inte ändra ActionScript-koden så länge som du behåller samma etikett för bildrutorna på den nya platsen.
Använd klassen FrameLabel i ActionScript 3.0 för representation av bildruteetiketter i koden. Varje instans av den här klassen representerar en enstaka bildruteetikett och har en
name
-egenskap som representerar namnet på bildruteetiketten enligt specifikationen i egenskapsinspektören och en
frame
-egenskap som representerar bildrutenumret för bildrutan där etiketten har placerats på tidslinjen.
För att komma till FrameLabel-instansen som hör ihop med en filmklippsinstans, ingår det två egenskaper i klassen MovieClip som returnerar FrameLabel-objekt direkt. Egenskapen
currentLabels
returnerar en array som består av alla FrameLabel-objekt som finns på en tidslinje i ett filmklipp. Egenskapen
currentLabel
returnerar en sträng som innehåller namnet på bildruteetiketten som påträffades senast längs tidslinjen.
Antag att du höll på att skapa ett filmklipp med namnet
robot
och har angett en etikett för de olika lägena i animationen. Du kan ange ett villkor som kontrollerar egenskapen
currentLabel
för att komma till det aktuella läget i
robot
enligt följande kod:
if (robot.currentLabel == "walking")
{
// do something
}
I Flash Player 11.3 och AIR 3.3 har händelsen
frameLabel
lagts till i klassen FrameLabel. Du kan tilldela en händelsehanterare till den FrameLabel-instans som representerar en bildruteetikett. Händelsen skickas när spelhuvudet når bildrutan.
I följande exempel skapas en FrameLabel-instans för den andra bildruteetiketten i arrayen med bildruteetiketter för MovieClip. Sedan registreras en händelsehanterare för händelsen
frameLabel
:
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}