Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Murilo Web

Entendendo cod RollOut(+ eficiente)

Recommended Posts

Nesse link ---> http://forum.imasters.com.br/index.php?sho...st=#entry894149

tem uma codigo para fazer rollout de uma maneira mais eficiente...

 

Só tentando entender bem o codigo para poder usar ele e edita-lo futuramente:

 

Tem algumas partes do codigo q n consegui entender a logica.. gostaria se possivel que alguemme explica-se os porques.. se possivel.. Obrigado.

 

 

Fiz comentarios no codigo numa linguagem bem simples de facil entendimento... só me corrijam se os meus raciocinios estão certo ;p:

 

 

on(rollOut, releaseOutside){ // quando o mouse sair, qdo clicar fora onEnterFrame = function(){ // dentro da sequencia de frame faça a seguinte funçãoif(_currentframe != 1){ // se o frame atual for diferente de 1this.prevFrame(); // volte para o frame anterior ( tambem n entendi a logica )}if(_currentframe == 1){ // se o frame atual for igual a 1delete onEnterFrame; // aqui eu n entendi a logica.. ??}}

Meu problema foi com essas duas linhas:

 

this.prevFrame(); // volte para o frame anterior ( tambem n entendi a logica )

delete onEnterFrame; // aqui eu n entendi a logica.. ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí Murilo!

 

 

segue explicação.. espero ajudar! ;D

 

 

 

 

 

ACTIONSCRIPT
on(rollOver){ // no rollover:

        delete onEnterFrame; // manda parar a sequencia de frames; (como se mandasse sair do loop)

        this.play(); // da um play na animação.

}

 

 

on(rollOut, releaseOutside){ // no rollout:

 

        onEnterFrame = function(){ // dentro da sequencia de frames faça a seguinte função: (como se fosse um loop)

               

                if(_currentframe != 1){ //  se o frame atual não for o frame 1,

                        this.prevFrame(); // manda pro frame anterior.

                }else{ // se o frame atual for o frame 1,

                        delete onEnterFrame; // para com a sequencia de frames. (como se mandasse sair do loop)

                }

        }

}

 

 

 

 

uma animação com 20 frames. no frame 1 tem um stop().

qnd eu coloco o mouse em cima (rollover), do um play na animação...

ae a animação vai andando até o frame 18, por exemplo.

nesse momento, eu tiro o mouse de cima (rollout), então começa a sequencia de frames (onEnterFrame).

isso funciona como se fosse um loop...

ae entra no "loop" e verifica se o frame atual é diferente de 1, se for, ele manda pro frame anterior.

(tava no frame 18, vai pro frame 17. depois pro 16, 15, 14...)

qnd chega no frame 1 ele entra no if, verifica que o frame atual (_currentframe) é igual a 1.

então manda parar com a sequencia de frames (delete onEnterFrame;).

a lógica parecida com a de um loop!!!

 

 

 

nao sei se fui claro, mas qlqr coisa manda aí!

 

 

 

 

abraços,

Gabriel Cunha

Compartilhar este post


Link para o post
Compartilhar em outros sites

[ POST CORRETO ]

 

Gabriel obrigado por estar me ajudando..

 

Para deixar o negócio mais eficiênte, estou querendo controlar os MC's colocando o codigo no frame e não direto no Botão, Dai estou fazendo assim oh..

 

 

// DECLARO A FUNÇÃO SEPARADA EM CIMA SEM O onterframe

 

function nomedafuncao () { if(_currentframe != 1){this.prevFrame(); }else{ delete onEnterFrame;}}

// AGORA EU CHAMO A FUNÇÃO NO ROLLOUT

 

btn1.onRollOver = function () {	   delete onEnterFrame; // manda parar a sequencia de frames; (como se mandasse sair do loop)	   this.play(); // da um play na animação.	   this.swapDepths(this.getNextHighestDepth()); // Estou usando para trazer para um nivel maior um dos 4 Mc's}btn1.onRollOut = function () {		this.nomedafuncao(); // CHAMO A FUNÇÃO!!!}

Estou fazendo o action todo no primeiro frame.. a animaçã esta dentro de btn1..

Fiz a função separada la emcima.. e n deu certo.. da para usar junto?? function dentro de funtion?? eh q ja estou usando um comando function para fazer referencia ao ( btn1 neh.. )

hehe a coisa agora parece mais simples.. mas eh muito importante, pois vai deixar o esquema muito mais eficiente..

Alguem sabe tirar essa minha duvida ?? Obbrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensando melhor na logica.. eu fiz assim:

 

 

// ROLLOVER

 

btn1.onRollOver = function () {	   delete onEnterFrame; // manda parar a sequencia de frames; (como se mandasse sair do loop)	   this.play(); // da um play na animação.	   this.swapDepths(this.getNextHighestDepth()); // Estou usando para trazer para um nivel maior um dos 4 Mc's
}

 

// ROLLOUT

 

btn1.onRollOut = function () {				if (this._currentframe != 1) { //  se o frame atual não for o frame 1,				this.prevFrame(); // manda pro frame anterior.				}				if (this._currentframe == 1){ // se o frame atual for igual a 1				delete onEnterFrame; // aqui eu n entendi a logica.. ??				}}

Galera.. RollOver e RollOut estão funcionando... Porem com um pequeno probleminha!

Ele volta só um frame quando eu tiro o mouse... mto estranho.. realmente n consegui identificar o pq..

Alguem sabe me dizer ?? só falta isso!! <O>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ele não esta indentificando como seuqencia de frames, pois não usei "onenterframe" no "rollout"Porem n sei como colocar o "onenterframe" no meio desse codigo.. Alguem pode me ajudar ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá certinho, só faz assim:

 

 

ACTIONSCRIPT
btn01.onRollOut = function() {

        this.onEnterFrame = function() {

                if (this._currentframe != 1) {

                        // se o frame atual não for o frame 1,

                        this.prevFrame();

                        // manda pro frame anterior.

                }

                if (this._currentframe == 1) {

                        // se o frame atual for igual a 1

                        delete this.onEnterFrame;

                        // aqui eu n entendi a logica.. ??

                }

        };

};

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.