Banner Dinâmico com Botões de Efeito Avançar/Retroceder em ActionScrip
Olá Pessoal!!!
Gostaria de tirar algumas dúvidas em relação a um projeto que estou desenvolvendo em Flash, utilizando ActionScript2.
Antes de tudo, gostaria de dizer que sou novo no fórum e tenho um conhecimento mediano em adobe flash. Por isso me desculpem se o tópico estiver muito extenso ou se as minhas actions de uma certa forma, não sejam as mais adequadas para meu projeto.
Trata-se de um banner de produtos, onde tenho 5 produtos, juntamente com 5 botôes (movieclips).
Quando clicado, os botões executam um "play" na timeline e param no frame correspondente ao botão clicado, avançando ou retrocedendo conforme o frame atual. Cada produto está utilizando um intervalo de 15 frames que é referente a animação de transição entre eles.
Em cada frame que marca o final da transição, inseri um "posClip" que determina o avanço dos frames. Segue a action dos botões que, por sinal, funciona perfeitamente (ban1,2,3,4,5 corresponde as instâncias dos movieclips que funcionam como botão)
ban1.onRelease = function(){
onEnterFrame = function(){
if (_currentframe>=1) {
prevFrame();
}
}
}
//--------------------------------------------------------------//
ban2.onRelease = function(){
onEnterFrame = function(){
if (_currentframe>=16) {
prevFrame();
}
else {
play();
}
}
}
//---------------------------------------------------------------------------//
ban3.onRelease = function(){
onEnterFrame = function(){
if (_currentframe>=31) {
prevFrame();
}
else {
play();
}
}
}
//---------------------------------------------------------------------------//
ban4.onRelease = function(){
onEnterFrame = function(){
if (_currentframe>=46) {
prevFrame();
}
else {
play();
}
}
}
//---------------------------------------------------------------------------//
ban5.onRelease = function(){
onEnterFrame = function(){
if (_currentframe>=61) {
prevFrame();
}
else {
play();
}
}
}
Até ai tudo bem. Por se tratar de um banner dinâmico, houve a necessidade de fazer com que o mesmo mostrasse cada produto, passando primeiramente pela transição e por fim, parando no frame que marca o final da transição por 8 segundos, para posteriormente avançar para o próximo produto, numa espécie de "loop" até o último produto, quando no último, após os 8 segundos, ocorre uma animação simulando um efeito de rebobinar e assim iniciar novamente todo o ciclo. Para isso, criei 3 funções em cada frame que marca o final da transição, conforme abaixo:
pausar = function(){
stop();
}
iniciar = function(){
play();
}
controlar = function(){
if(_currentframe == 1){
pausar();
var intervalo = setTimeout(iniciar, 8000);
}
}
onde "_currentframe == 1" indica o frame que marca o final da transição. Para cada frame esse valor obviamente é diferente.
Em cada frame que marca o final da transição chamei a função "controlar", que é responsável pela animação automãtica do banner conforme abaixo:
controlar();
Tudo perfeitamente funcionando de acordo até aqui... agora vem o meu problema:
Quando clico nos botões, os mesmos executam o comando para avançar ou retroceder, porém, ficam parados no frame atual e não executam mais a animação automática após os 8 segundos...
Sei que o setTimeout executa a função uma única vez, o mais apropriado seria o setInterval/clearInterval...
Porém não há meios para que o banner funcione corretamente com o setInterval... já tentei de todas as formas e isso não foi possível... mesmo com o clearInterval, o tempo do intervalo nunca é reiniciado, fazendo com que o banner fique com intervalos desregulados...
Dúvida: Há alguma forma de, ao clicar nos botões, esse "setTimeout" seja executado novamente??? Há alguma forma alternativa (em ActionScript2) de se fazer esse mesmo procedimento que eu preciso???
Se necessário posso enviar o .fla para análise.
Agradeceria muito se alguém pudesse me ajudar a solucionar... já faz algumas semanas que estou tentando e não consigo uma solução... já li vários tutoriais, informações, tópicos de fórums... e nada até o momento.
Aguardo resposta...
Abraço!!!
Discussão (4)
Carregando comentários...