Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leandroguimaraes

scripts no primeiro frame

Recommended Posts

Boa tarde pessoal,

 

eu estava com uma dúvida enorme com relação aos scripts colocados no primeiro frame, mas, como se tratava de um arquivo de animação de personagens, a coisa ficaria muito louca de se explicar, devido a complexidade da animação. Então eu resolvi fazer algo extremamente simples para explicar qual é a minha dúvida. Eis a questão:

 

Fiz um quadrado e o transformei em movieclip.

Instanciei esse quadrado como "q1".

Aninhei esse quadrado em um movieclip vazio (ou seja, esse movieclip contém apenas o movieclip do quadrado).

Instanciei esse segundo movieclip como "ninho".

Fiz um motion tween, do frame 1 ao 180, movendo o quadrado (q1) na horizontal.

Fiz outro motion tween, do frame 180 ao 360, movendo o quadrado (q1) na vertical.

No primeiro frame do movieclip "ninho", coloquei o script "stop();", para que o quadrado ficasse paradinho lá, quando o swf rodasse.

No primeiro frame da timeline principal, coloquei o script "ninho.gotoAndPlay(2)", para que a animação do quadrado rodasse.

 

Sim, nesse exemplo parece que o que eu fiz foi uma completa loucura, sendo que o stop(); dentro do "ninho" dizia para o quadrado ficar parado e o ninho.gotoAndPlay(2) da timeline principal dizia para ele se mover, PORÉM, para a finalidade que eu queria, isso tinha sentido.

 

A dúvida é apenas essa, é impossivel fazer com que o ninho.gotoAndPlay(2) se sobreponha ao stop(); e faça com que o quadrado ande?

 

Agradecimentos antecipados a todos que puderem colaborar com a minha causa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você fez está certo, adicionar o stop(); no frame 1, mas precisa de um comando que faça o qd1 rodar a partir do frame 2.

 

A forma mais simples de ativar a animação é usar um botão e dar play();

 

Fiz um exemplo básico com botão, salvei para a versão CS3 >> http://rapidshare.com/files/449713687/ninho.rar

 

Se precisar que qd1 fique em loop, basta adicionar no último frame >> gotoAndStop(2);

 

Outra possibilidade é definir uma condição, por exemplo, quando a animação principal chegar ao frame 90 o mc com outro aninhado será chamado a executar o 'play'.

 

http://rapidshare.com/files/449721697/condicional.rar

 

(obs: a anima externa frame a frame foi ao converter CS5>>CS4>>CS3. A interna está ok, eu alterei)

 

 

Também dá para pensar em usar um 'TIMER' com delay (atraso), conforme o caso.

 

 

Eu uso AS3, mesmo assim fica fácil de compreender. É só adaptar para AS2.

 

 

 

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Elektra,

 

Com um botão a coisa realmente funciona, mesmo havendo um stop(); dentro do movieclip "ninho", ao clicar em um botão com o código ninho.gotoAndStop(2); aplicado a ele, a animação do q1 se movendo, toca. Porém, se você não colocar esse código em um botão, e sim na timeline principal, ele não toca. A impressão que eu tenho é que o stop(); dentro do movieclip "ninho" se sobrepõe ao ninho.gotoAndStop(2); da timeline principal. Agora o mais estranho de tudo é que se você coloca tudo exatamente igual, porém no segundo frame, adicionando apenas um stop(); na timeline principal, para que ele não fique indo do frame 1 pro 2, aí animação toca. Fiz dois swf's que mostra isso bem claramente, e neles eu adicionei a imagem dos frames pra ficar bem fácil de entender.

 

http://www.swfupload.com/view/158599.htm --> Com código aplicado no segundo frame

 

http://www.swfupload.com/view/158600.htm --> Com código aplicado no primeiro frame

 

Na verdade eu já até resolvi isso, bastando jogar tudo para o segundo frame, mas isso me encucou demais, pois eu não estava identificando o porque da animação não tocar, até que resolvi testar colocar tudo no segundo frame, e aí eu fiquei curioso do porque de isso acontecer.

 

a propósito, valeu pela participação, Elektra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você usa outra versão do Flash, então publiquei o arquivo:

 

http://www.swfupload.com/view/158648.htm

 

Para inserir o code direto no frame 1 da timeline principal pode usar algo assim (em AS3):

 

addEventListener(Event.ENTER_FRAME, anima);

function anima (evt:Event):void
{
if(currentFrame == 90)

{
	ninho.play();
}
}

 

 

A base cinza com a bolinha vermelha é a animação na timeline principal. O quadrado laranja é o movie clip 'ninho' (mc), dentro dele e está o movie clip 'qd1' que será animado somente após alcançar o frame 90.

 

A layer 'frame 90' contém apenas um comentário, para referência.

 

Imagem da timeline: http://rapidshare.com/files/449827206/condicional.jpg (imageshack tá bugado, upei o jpg no rapidshare mesmo)

 

 

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.