Enviar un clip de película a un nuevo fotograma es muy sencillo. Mediante una llamada a
gotoAndPlay()
o
gotoAndStop()
, el clip de película saltará al número de fotograma especificado como parámetro. Como alternativa, se puede pasar una cadena que coincida con el nombre de una etiqueta de fotograma. Se puede asignar una etiqueta a cualquier fotograma de la línea de tiempo. Para ello, hay que seleccionar un fotograma de la línea de tiempo e introducir un nombre en el campo Etiqueta de fotograma del inspector de propiedades.
Las ventajas de utilizar etiquetas de fotogramas en lugar de números se aprecian especialmente cuando se crea un clip de película complejo. Cuando el número de fotogramas, capas e interpolaciones de una animación es elevado, resulta útil etiquetar los fotogramas importantes con descripciones explicativas que representan los cambios en el comportamiento del clip de película; por ejemplo, "off" (fuera), "walking" (caminando) o "running" (corriendo). De esta forma se mejora la legibilidad del código y se logra una mayor flexibilidad, ya que las llamadas de código ActionScript para ir a un fotograma con etiqueta señalan a una sola referencia, la etiqueta, en lugar de a un número de fotograma específico. Si posteriormente se decide mover la cabeza lectora a un segmento específico de la animación en un fotograma diferente, será necesario modificar el código ActionScript manteniendo la misma etiqueta para los fotogramas en la nueva ubicación.
Para representar etiquetas de fotograma en el código, ActionScript 3.0 incluye la clase FrameLabel. Cada instancia de esta clase representa una sola etiqueta de fotograma y tiene una propiedad
name
, que representa el nombre de la etiqueta de fotograma especificado en el inspector de propiedades, y una propiedad
frame
que representa el número de fotograma del fotograma en el que está colocada la etiqueta en la línea de tiempo.
Para acceder a las instancias de FrameLabel asociadas con una instancia de clip de película, la clase MovieClip incluye dos propiedades que devuelven objetos FrameLabel directamente. La propiedad
currentLabels
devuelve un conjunto formado por todos los objetos FrameLabel de toda la línea de tiempo de un clip de película. La propiedad
currentLabel
devuelve una cadena que contiene el nombre de la etiqueta de fotograma encontrada más reciente en la línea de tiempo.
Supongamos que se crea un clip de película denominado
robot
y que se asignan etiquetas a los distintos estados de animación. Se podría configurar una condición que comprobara la etiqueta
currentLabel
para acceder al estado actual del robot, como en el código siguiente:
if (robot.currentLabel == "walking")
{
// do something
}
Flash Player 11.3 y AIR 3.3 han añadido el evento
frameLabel
a la clase FrameLabel. Puede asignar un controlador de eventos a la instancia de FrameLabel que represente una etiqueta de fotograma. El evento se distribuye cuando la cabeza lectora accede al fotograma.
El siguiente ejemplo crea una instancia de FrameLabel para la etiqueta del segundo fotograma del conjunto de etiquetas de fotograma de MovieClip. Seguidamente, registra un controlador de eventos para el evento
frameLabel
:
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}