Jump to content


Photo

[resolvido] Trocar De "frame" Automaticamente A Cada X Segun


  • Faça o login para participar
2 replies to this topic

#1 Humberto Rodrigues

Humberto Rodrigues

    Turista

  • Usuários
  • 59 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro

Posted 24/01/2009, 15:01

Olá,
estou fazendo uma "animação" em flash, onde eu preciso que a cada X segundos, passe para a próxima frame. Bem, eu fiz com o seguinte código:

setInterval(function () {clearInterval();gotoAndPlay(4);	},10000);

Ele funcionaria perfeitamente. Só que existem um "botões" para passar manualmente, ou seja, o usuário pode clicar no botão e assim passar para a frame que ele quiser. Só que quando o usuário clica para ir para frame 4, por exemplo, a frame 1 continua executando o SetInterval. Aí fica uma zona. Bem, acho que mostrando fica mais fácil de entender. Veja no link: http://www.linkhost.com.br/2009 ()

Observe que o frame troca normalmente. Agora, clique em um dos botões (São os números à direita), repare a loucura que fica!
:lol:

Se alguém puder me ajudar...

Já resolvi de uma outra forma...
Obrigado!

#2 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 19/02/2009, 08:38

Humberto.

Se você encontrou uma solução, uma boa idéia é compartilhar a solução com os outros usuários do fórum.

Para quem está pesquisando a mesma dúvida, faça assim:

// declaro uma variável que vai armazenar o intervalo em segundos que a troca ocorrerá:
var segundos:Number = 3;
// Crio um setInterval e o armazeno em uma variável de nome "intervalo":
// Esse intervalo vai chamar a função "trocaFrame" quando o valor de "segundos" for alcançado:
var intervalo:Number = setInterval(segundos * 1000, trocaFrame);

// função para troca de frames:
function trocaFrame():Void {
	 minhaAnimacao_mc.nextFrame();
}

// crio agora uma função chamada "restarInterval" para ser chamada no evento de clique do botão.
// Ou seja, para cada vez que o usuário clicar no botão "avançar", a função restart vai resetar o interval
// e fazer com que ele reinicie a contagem, evitando assim que mude de frame antes do instante correto.
function restartInterval():Void {
	 clearInterval(intervalo); // clearInterval é pouco confiável em AS 2 (minha opinião), então também vou apontá-lo para um valor nulo:
	 intervalo = null;
	 // recrio o interval:
	 intervalo = setInterval(segundos * 1000, trocaFrame);
}

// Agora basta chamar a função restartInterval nos eventos de cliques dos seus botões de controle.


Abraços.

pp

Edição feita por: Pedropauloalmeida, 19/02/2009, 08:39.


#3 Humberto Rodrigues

Humberto Rodrigues

    Turista

  • Usuários
  • 59 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro

Posted 19/02/2009, 10:03

Olá Pedro,

Compartilharia a solução com o maior prazer, como sempre faço. Mas não obtive uma solução correta. Logo, não tive como ajudar.

Abraços,
Humberto Rodrigues




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq