Vimos algumas situações de animação, e procuramos sempre resolve-las através do uso de transições de forma, movimento, ou através de uma animação quadro-a-quadro.
Algumas situações, no entanto, são mais complexas do que as que vimos até agora, e pedem uma outra estratégia.
Existe o movimento da máquina, dos dois pistões, e da engrenagem. E tudo se move ao mesmo tempo. Animar tudo isto no timeline principal iria ser muito trabalhoso.
Mas há uma outra forma, que resolve este problema encapsulando objetos dentro de outros objetos. Para fazer esta animação eu montei a máquina e depois converti cada pistão como um objeto separado, dentro do movieclip da máquina e fiz a animação de cada pistão dentro do próprio objeto pistão. Assim, o processo não difere muito do que vimos até agora, com a diferença que podemos considerar um movieclip como um timeline próprio.
Este processo nos dá a chance de combinar movimentos complexos sem perder a visão de onde cada movimento se encontra. No final do processo temos objetos que contém seu movimento internalizado.
Um exemplo disto é fazer uma bicicleta. Existe o movieclip cRoda2 (que é simplesmente o objeto desenhado) e o objeto cRoda (que é o movieclip cRoda2 já com movimento). Veja como é a montagem no vídeo a seguir.
As ações que podem ser programadas em um botão são muitas, mas veremos apenas cinco ações, as mesmas que podem ser aplicadas aos quadros.
| função | sintaxe | |
|---|---|---|
| play | continuar a execução animação, depois de ela ter sido parada | bt1.onRelease = function() { play(); } |
| stop | parar a execução da animação | bt1.onRelease = function() { stop(); } |
| gotoAndPlay | desviar a animação para outro trecho e continuar executando a animação | bt1.onRelease = function() { gotoAndPlay(21); } |
| gotoAndStop | desviar a animação para outro trecho e parar | bt1.onRelease = function() { gotoAndStop(21); } |
| geturl | carregar uma página HTML no navegador | bt1.onRelease = function() {getURL("http://www.uol.com.br"); } |
Reparem que, diferentemente da plaicação de ações sobre quadros, nos botões temos que dizer em qual ação do usuário sobre o botão a ação deve ser disparada. Para simplificar, usaremos sempre a ação de clic sobre o botão, disparando a ação quando o mesmo é solto (release).