JOÃO NETO (78 pts)

MUZAK (45 pts)

MANGOOST (80 pts)

ZEBEDIAH (35 pts)

MARCELO SIQUEIRA (96 pts)

FLASHGURU (155 pts)

STICKMAN (155 pts)

NETO LEAL (116 pts)

NILTON BICALHO (61 pts)

SASHA GUDEY (235 pts)

PEDRO CLAUDIO (50 pts)

AMAURY BENTES (123 pts)
Treinamento PontoFlash de Flash e ActionScript

Dá para fazer animações 3D no Flash?

Preciso de um Script de Contagem regressiva para o Flash.

Preciso de um preloader, mas tem que ser o mais simples que existir.

Como faço um sistema de banners aleatórios?

Como faço para simular frames dentro do Flash? Sem HTML.

Eu quero que uma imagem (bitmap) abra uma janela POPUP.

Com eu faço para chamar um script em PHP, usando flash4, passando para e este uma variável digitada num form?

Tem como setar um level (nível) para um movieclip?

Preciso de um botão que ao clicar feche um filme que funcione numa página HTML.

Quero alterar a ordem de movimentação da tecla tab num formulário.

Alguém sabe um modo de converter um número com várias casas após a vírgula para um com apenas 3?

Eu não sei como que muda as cores gradientes no Flash5.

Jogo Genius.

Preciso criar uma interação Asp + Flash para login e senha.
LocalConnection

Botões estilo Apple.com feito no PhotoShop

Compartilhando fontes

Event Handlers (identificadores de eventos).

Curiosidades.

Degradé com tons metálicos - Fireworks

Controle de som no Flash 5.

Interação de Flash+Asp.

Mascara animada no Flash MX

Blend - Fireworks

Como eliminar vozes de um arquivo Wav.

Plugins variados para seu trabalho em design
Drag MC 1

Gravidade

MovieClip.onCollision

Loading trail

Lensflare

Trilha

To Lower Case

Liga e desliga MX

Drag and run

Menu Popup

Shared Object

Barra interativa
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!