RODRIGO AMARAL (56 pts)

ZEBEDIAH (35 pts)

RÔMULO NUNES (32 pts)

FLASHGURU (155 pts)

IRAPUAN MARTINEZ (45 pts)

DAAFY (55 pts)

DENIS CARAVALHO (85 pts)

MANGOOST (80 pts)

LUI FERNANDO (151 pts)

NETO LEAL (116 pts)

DEMIS BUCCI (50 pts)

HELEN TRIOLO (444 pts)
Treinamento PontoFlash de Flash e ActionScript

Integração ASP com Flash em um formulário com um combobox.

Uma instrução de um movieclip para a timeline principal não funciona.

Porque sempre o relógio no Flash mostra 1 hora atrasado?

Gostaria que vocês me dessem uma dica, quando usar e quando não usar o loading.

Como alinhar dinamicamente um movieclip no centro do palco, horizontalmente e verticalmente?

Como faço um cursor customizado apenas em uma determinada área do site?

Como fazer um formulário no Flash usando um checkBox?

Como posso fazer com que um objeto do flash possa ser movido pela pessoa que esta vendo a página?

Quero desabilitar os botões do _level0 (nível zero).

Tenho três sons para o usuário ligar e desligar, como fazer?

Algumas dicas sobre fontes e tipografia

Como fazer uma impressão (print) somente em um determinado frame no Flash?

Estou com dificuldades de usar fontes true type sem anti-aliasing.

Quero fazer um movimento circular infinito sem quebras (truncados).
Labirinto - Plataforma de jogo em terceira pessoa em flash 5: 1° parte

GetMySQLData para Flash5 (primeira parte)

Flash e as mudanças do IE

Aplicativo Dirigido por Dados com XML

Botão avançar e recuar.

O "X" do MacOS no PhotoShop

Troca de cor de imagens

Integrando o Flash com Arquivos de Vídeos I

Flash MX 2004 Updater

Atenuação (easing).

Macromedia Flex

Formulário de e-mail com ASP.
Double cube

Openmenu

Visibilidade

Chinese dragoon

Pista de corrida

Starshiner

Photo album

Cronômetro

Swap Movieclips

Move objects

Digit light

Planeta girando
HOME | TRUQUES E DICAS
Caso em que numa função setInterval, o clearInterval não funciona.
por Marcelo Siqueira



O que acontece no script abaixo é que o intervalo é dado normalmente. As ações são executadas, mas o clearInteval não funciona e as ações são executadas novamente depois dos 20s. Eu já pus a função intervalo no frame, já coloquei clearInterval(this); Nada funciona.


on (press, release, rollOver, dragOver) {
    intervalo = function () { _root.simbolo3.gotoAndPlay("tres");clearInterval(tempo);};
    t++;
    if (t>=2) {
        tempo = setInterval(intervalo, 20000);
    }
}


Esse é um caso interessante, mas não há nada de errado com o setInterval. são dois problemas:

O primeiro é estar misturando os eventos press, release e rollover. o código está sendo acionado várias vezes. press e release juntos acionam o código duas vezes, praticamente ao mesmo tempo.

Antes do intervalo acionado por um terminar, e o clearInterval ser acionado, o outro aciona o setInterval novamente. Se tirar um dos dois, seu código já vai parecer funcionar direito.

Também não faz sentido ter rollover junto com press ou release. o rollOver está sendo anulado pelo contador que você colocou. Inclusive, fazer rollOver duas vezes vai acionar o código sem apertar o botão. Para resolver esse primeiro problema bastaria:

on (press) { //ou então rollOver, dragOver
    intervalo = function(){
        _root.simbolo3.gotoAndPlay("tres");
        clearInterval (tempo);
    }
    tempo = setInterval(intervalo, 2000);
}

o segundo problema é que, se o botão for clicado novamente durante o intervalo, o código também vai ser acionado novamente e se for clicado várias vezes, vai acontecer o mesmo problema de antes. o clearInterval vai deixar de funcionar e o loop não vai acabar nunca. Para funcionar só uma vez você pode colocar uma flag de controle:

on (release) {
    // ou então rollOver, dragOver
    intervalo = function () { _root.simbolo3.gotoAndPlay("tres");clearInterval(tempo);running = false;};
    acionaIntervalo = function () { if (!running) {tempo = setInterval(intervalo, 2000);running = true;}};
    acionaIntervalo();
    // aciona a primeira função
}


O ideal seria deixar essas funções na timeline. você poderia acioná-las com outros botões, usando diferentes parâmetros, por exemplo:

nos botões:

on (release) {
    acionaIntervalo(simbolo, alvo, tempo);
    // seleciona o movieclip, o alvo e o
    intervalo;
}

na timeline:

function acionaIntervalo(simbolo, alvo, tempo) {
    if (!running) {
        intervalo = setInterval(mudaClip, tempo, simbolo, alvo);
        running = true;
    }
}
function mudaClip(simbolo, alvo) {
    simbolo.gotoAndPlay(alvo);
    clearInterval(intervalo);
    running = false;
}

Marcelo Siqueira


1 comentário


Comentário de Valter
| 7/12/2010 - 13:14 |


A sua duvida me ajudou. Valeu!