Flash AS2 10: Endereçamento

1. Manipulando movies

Imagine que você tem vários movie clips rodando ao mesmo tempo… Cada um tem a sua timeline, certo?

Como controlar cada um separadamente?

Bem, nesta aula, vamos fazer exatamente isso: controlar cada movie clip em separado, inclusive a animação do timeline principal.

A primeira providência para que possamos controlar cada movie clip é batizá-lo, isto é, dar um nome à sua instância.

2. Animação



Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player


Experimente os botões e depois continue lendo. Se preferir, baixe o FLA e veja o que acontece.

Primeiro fiz uma animação normal, no timeline principal: essa da bola azul. Abaixo da bola, criei os botões de stop e play. Até aí, nada de novo.

Depois criei um movie clip com uma animação de um quadrado rodando.

Repare que, ao clicar nos botões que estão no timeline principal, nada acontece com o movie clip. Isso porque o clip tem seu próprio timeline… Se eu quiser parar o timeline do clip, tenho que me endereçar a ele. Esta noção, de endereçamento, é a essência desta aula. Bem, continuando…

Voltei para o timeline principal e coloquei outros botões de stop e play. Mas como fazer com que um botão no timeline principal pare o movimento dentro do timeline do movie clip do quadrado vermelho? Digamos que o nome da instância que dei para o movie do quadrado é “chiquinho”. Veja:

s2.onRelease=function(){
  chiquinho.stop();
}

O código acima irá enviar o comando stop para o movie clip “chiquinho”. O mesmo vale para o comando play:

s2.onRelease=function(){
  chiquinho.play();
}

Agora já temos uma solução para comandar um timeline a partir de outro. Mas e se os meus botões estivessem dentro do movie clip do quadrado, qual seria o código para parar a animação do quadrado?

Abri o movie clip, criei um layer e inseri botões play e stop dentro do movie clip. Uma vez que ambos (botão e animação) estão no mesmo timeline, os comandos são os mesmos usados para os botões comuns:

s1.onRelease=function(){
  stop();
}

E finalmente: se eu tiver botões dentro do movie clip e quiser que eles controlem o timeline principal? Esta pergunta pode ser feita de outra forma.

Bem, se cada movie clip tem o seu nome de instância, qual o nome da instância do timeline principal?

Bem, a resposta para essa pergunta é “_root”.

Root, em inglês, quer dizer raiz. O nome _root é usado quando quisermos controlar algo (o timeline, um objeto, uma variável) na timeline principal.

s3.onRelease=function(){
  _root.stop();
}

3. A diferenção essencial entre a timeline principal e a timeline dos movieclips

Se você entendeu bem o exercício, deve ter visto que não há nenhuma diferença essencial entre o timeline principal e os timelines de cada movie clip. São só timelines dentro de outros timelines.

Assim, quando carregar um movie clip externo, como fez na aula passada, pode controla-lo usando o endereçamento adequado.

Tente testar esse recurso pois ele é um dos mais usados para projetos um pouco mais ambiciosos usando Flash.

4. Vídeo