Função de Voltar com Prototype (Animação Reversa)


Alow galera.

Quem nunca teve aquela necessidade de voltar uma animação de um MovieClip via Actionscript, sem precisar de refazer a animação, seja de um botão ou até mesmo de um movimento complexo. Para isso, coloque o seguinte código no primeiro frame do seu flash (ou crie um arquivo .as para ser compartilhado e inclua-o):

MovieClip.prototype.voltar = function(frame, qFrm) {
//cria o movieClp de controle
var voltarControl = this.createEmptyMovieClip(“voltarControl”, this.getNextHighestDepth());
//averigua se a veriável frame é indefinida, e seta como frame 1
if (frame == undefined) {
frame = 1;
}
//se a qFrm não for definida, pula de 1 em 1
if (pStop == undefined) {
voltarControl.onEnterFrame = function() {
if (this._parent._currentframe != frame) {
this._parent.prevFrame();
} else {
delete this.onEnterFrame;
}
};
} else {
//se a qFrm for definida, pula na qtd informada
voltarControl.onEnterFrame = function() {
if (this._parent._currentframe>frame) {
this._parent.gotoAndStop(this._parent._currentframe-qFrm);
//vendo o restante
if (this._parent._currentframe<=qFrm) {
qFrm = this._parent._currentframe-1;
}
} else {
delete this.onEnterFrame;
}
};
}
};

A sintaxe da função é meuMc.voltar(frame,qFrm);
frame > Até qual frame você que que volte a animação, se não informado, volta até o 0;
qFrm > Informa de quantos em quantos frames a animação deve voltar, se não informado, o valor padrão é 1. Caso seja informado 3, por exemplo, a animação volta de 3 em 3 frames, sendo mais rápida.

Para interromper este prototype, caso necessário, é só deletar o onEnterFrame que fica no voltarControl, desta maneira:

delete meuMc.voltarControl.onEnterFrame;

É isso aí galera. Espero que ajude.
Baixe os arquivos aqui.

, , ,

  1. #1 por Rafael em Fevereiro 14th, 2008

    Olá,
    há como fazer a função prototype parar depois de acionada?
    Isto é, um botão de stop funciona com a função prototype?
    Estou meio desesperado pq o meu cliente faz questão disso e eu não consigo descobrir uma maneira de resolver o problema. Veja aqui: http://www.cvdesign.com.br/portifolio1.swf
    Clique em forward, depois em back e tente apertar o botão de stop. Simplesmente não funciona!

    Muito obrigado pela atenção e desculpe qualquer coisa…

    Rafael

  2. #2 por Weverton Naves em Fevereiro 15th, 2008

    Amigo, como esta função cria o mc voltarControl e seta um enterFrame nele para fazer o retrocesso, seria simplesmente deletar este onEnterFrame, da seguinte maneira:

    delete meuMC.voltarControl.onEnterFrame;

  3. #3 por Frank Tramontin em Março 5th, 2009

    Muito Boa a matéria ja fiz grandes esqueminhas!

    Mas agora precisei de gerar a idéia de uma animação reversa só que puxando de swf, ou seja eu crio uma pagina que vai ter o cabeçalho e quando eu clico no outro botão queria que a animação que esta na tela voltasse e abrisse a outra!! Só que cada animação é swf separados!!
    Tem como você me dar uma luz de como fazer isso??

    Abralços

  4. #4 por Frank Tramontin em Outubro 27th, 2009

    Muito Boa a matéria ja fiz grandes esqueminhas!

    Mas agora precisei de gerar a idéia de uma animação reversa só que puxando de swf, ou seja eu crio uma pagina que vai ter o cabeçalho e quando eu clico no outro botão queria que a animação que esta na tela voltasse e abrisse a outra!! Só que cada animação é swf separados!!
    Tem como você me dar uma luz de como fazer isso??

    Abralços

  5. #5 por Weverton Naves em Março 27th, 2009

    Bom, eu faria uma função que carregaria esses swfs.
    Daí na hora que vc carregá-los, em vez de tocar do primeiro frame, comece a tocar do segundo.
    No primeiro frame vc coloca a chamada para a função de carregamento.
    Para desativar esse link e ativar outro, faça a animação reversa, que quando ele chegar no primeiro frame vai chamar o novo swf.

    Flw.

(não será publicado)
  1. Nenhum trackback.