O envio de um clipe de filme para um novo quadro é simples. A chamada de
gotoAndPlay()
ou
gotoAndStop()
fará o clipe de filme saltar para o número de quadro especificado como parâmetro. Se preferir, você pode transmitir uma sequência de caracteres que corresponda ao nome de um rótulo de quadro. É possível atribuir um rótulo a qualquer quadro na linha de tempo. Para fazer isso, selecione um quadro na linha de tempo e digite um nome no campo Rótulo do quadro no Inspetor de propriedades.
As vantagens de usar rótulos de quadro em vez de números ficam mais evidentes ao criar um clipe de filme complexo. Quando o número de quadros, camadas e interpolações em uma animação for grande, considere a rotulagem de quadros importantes com descrições explicativas que representem mudanças de comportamento no clipe de filme (por exemplo, "off", "walking", "running"). Isso melhora a confiabilidade do código e também fornece flexibilidade, já que as chamadas do ActionScript que vão para um quadro rotulado são ponteiros para uma única referência, o rótulo, em vez de um número de quadro específico. Se mais tarde você decidir mover um segmento específico da animação para um quadro diferente, não será necessário alterar o código do ActionScript contanto que mantenha o mesmo rótulo para os quadros no novo local.
Para representar os rótulos de quadro no código, o ActionScript 3.0 inclui a classe FrameLabel. Cada ocorrência dessa classe representa um único rótulo de quadro e tem uma propriedade
name
representando o nome do rótulo de quadro conforme especificado no Inspetor de propriedades e uma propriedade
frame
representando o número do quadro com rótulo colocado na linha de tempo.
Para obter acesso às ocorrências de FrameLabel associadas a uma ocorrência de clipe de filme, a classe MovieClip inclui duas propriedades que retornam objetos FrameLabel diretamente. A propriedade
currentLabels
retorna uma matriz que consiste em todos os objetos FrameLabel na linha de tempo inteira de um clipe de filme. A propriedade
currentLabel
retorna uma sequência de caracteres contendo o nome do rótulo de quadro encontrado mais recentemente na linha de tempo.
Suponha que você crie um clipe de filme chamado
robot
e rotulou os diversos estados dessa animação. Você pode configurar uma condição que verifica a propriedade
currentLabel
para acessar o estado atual de
robot
, como no seguinte código:
if (robot.currentLabel == "walking")
{
// do something
}
O Flash Player 11.3 e o AIR 3.3 adicionaram o evento
frameLabel
à classe FrameLabel. Você pode atribuir um manipulador de eventos à instância FrameLabel que representa um rótulo de quadro. O evento é despachado quando o indicador de reprodução entra no quadro.
O exemplo a seguir cria uma instância FrameLabel para o segundo rótulo de quadro na Matriz de rótulos de quadro do MovieClip. Em seguida, registra um manipulador de eventos para o evento
frameLabel
:
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}