Ir para conteúdo

POWERED BY:

Arquivado

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

ava.rj

[Resolvido] gotoAndStop não consigo fazer funcionar

Recommended Posts

Já tentei tantas vezes, por favor me digam onde errei :(

 

O MC menu1 tem 2 frames, ele inicia no frame 1 e quando passar o mouse em cima dele, quero que vá para o frame 2.

Não funciona, ele fica só piscando.

 

stop();

var menu:mcAbamenu = new(mcAbamenu);
var menu1:mcMenuSgr = new(mcMenuSgr);

menu.x = -181;
menu.y = 0;
menu1.x = -50;
menu1.y = 26;

addChild(menu);
addChild(menu1);

menu.gotoAndStop(1);
menu1.gotoAndStop(1);

menu1.addEventListener(MouseEvent.MOUSE_OVER, menu1OverListener);
menu1.addEventListener(MouseEvent.MOUSE_OUT, menu1OutListener);

function menu1OverListener (e:MouseEvent):void {
	menu1.gotoAndStop(2);
}
function menu1OutListener (e:MouseEvent):void {
	menu1.gotoAndStop(1);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo com:

 

menu.gotoAndStop(1);
menu1.gotoAndStop(1);

Sugiro adicionar >> stop(); >> nos frames 1 e 2 na timeline interna do movie clip.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas a orientação que sempre vejo, é que usemos sempre os códigos AS num mesmo lugar.

Tem como dar este "stop" pela time line principal? Tipo... "quando chegar no frame 2 do MC, pare"

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo usando uma classe externa, que dispensa totalmente a timeline para inserir o action, carregando o movie clip pela library, por vezes não temos como dispensar este recurso.

 

O que é possível é criar os estados do movie clip apenas pelo action, mas nesse caso irá dispensar totalmente o uso dos frames.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei tantas vezes, por favor me digam onde errei :(

 

O MC menu1 tem 2 frames, ele inicia no frame 1 e quando passar o mouse em cima dele, quero que vá para o frame 2.

Não funciona, ele fica só piscando.

 

stop();

var menu:mcAbamenu = new(mcAbamenu);
var menu1:mcMenuSgr = new(mcMenuSgr);

menu.x = -181;
menu.y = 0;
menu1.x = -50;
menu1.y = 26;

addChild(menu);
addChild(menu1);

menu.gotoAndStop(1);
menu1.gotoAndStop(1);

menu1.addEventListener(MouseEvent.MOUSE_OVER, menu1OverListener);
menu1.addEventListener(MouseEvent.MOUSE_OUT, menu1OutListener);

function menu1OverListener (e:MouseEvent):void {
	menu1.gotoAndStop(2);
}
function menu1OutListener (e:MouseEvent):void {
	menu1.gotoAndStop(1);
}

Seu código parecia estar em ordem, então eu fiz um pequeno teste, criando 2 movieclips na biblioteca e colocando 2 frames nele, cada um com um desenho diferente.

 

Na biblioteca dei a eles os nomes mcAbamenu e emcMenuSgr, então colei seu código no stage e pronto, tudo estava funcionando perfeitamente, nada de ficar piscando, só mudava quando eu passava o mouse.

 

Assim, só posso imaginar que no seu caso o frame 1 tem um movieclip com animação, ou no frame 2, ou mesmo em ambos e provavelmente isso faz ele piscar, e não adianta fazer ele parar, por que se este movieclip estiver no frame 1 mas não no frame 2, sempre que voltar ao 1 você vai ter de fazer ele parar de novo, e isso não é bom.

 

Então o ideal é usar stop() no frame como a Elektra disse, mas então você diz:

 

Mas a orientação que sempre vejo, é que usemos sempre os códigos AS num mesmo lugar.

Tem como dar este "stop" pela time line principal? Tipo... "quando chegar no frame 2 do MC, pare"

 

Abs

 

É verdade, mas a partir do ponto que você usou um MOVIECLIP, a partir do momento que você acrescentou a TIMELINE ao processo, você pegou o conceito de Programação Orientada a Objeto e partiu para a Programação Orientada ao Tempo (isso não existe, essa eu inventei agora Imagem Postada).

 

Por que pense bem, do nada, simplesmente de acordo com o tempo um objeto aparece, que jamais foi declarado, instânciado, ou sequer existe uma classe para ele, então aparece do nada, e depois de um tempo simplesmente desaparece, pra mim isso é mágica Imagem Postada.

 

Então se você que trabalhar 100% com POO esqueça a linha de tempo, ela não faz mais parte do seu trabalho, mas se você for esperto e usar o melhor dos dois como o Sprite para programação e o MovieClip para animação simples, sem muita interatividade, então você soube aproveitar o melhor dos dois.

 

A causa do seu problema pode ser outro, mas eu queria que você entendesse que você pode sim usar um pouco de programação na linha de tempo, ma tem de saber quando e onde usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É verdade, mas a partir do ponto que você usou um MOVIECLIP, a partir do momento que você acrescentou a TIMELINE ao processo, você pegou o conceito de Programação Orientada a Objeto e partiu para a Programação Orientada ao Tempo (isso não existe, essa eu inventei agora Imagem Postada).

 

Cara, o Flash não é exatamente como as outras linguagens. Utilizar sua linha de tempo, pra mim, é crucial. Na minha opnião, a Adobe não deixou alternativa boa o bastante para deixarmos de usar esses métodos em frames da timeline. Você pode usar Event.ENTER_FRAME com algumas condições ou addFrameScript(), que nem sequer foi documentado.

 

Por que pense bem, do nada, simplesmente de acordo com o tempo um objeto aparece, que jamais foi declarado, instânciado, ou sequer existe uma classe para ele, então aparece do nada, e depois de um tempo simplesmente desaparece, pra mim isso é mágica Imagem Postada.

No Flash, quando você chama stop(), você está omitindo this, mas ele continua valendo, certo? Logo, esse this.stop() faz parar o MovieClip em questão, exatamente como se tivesse sido escrito num arquivo de classe. Não é tão procedural assim, né?

 

Deixando pra lá o off topic, será que o ava.rj não está tendo erros de compilação? Se o compilador vê qualquer erro no script, o flash player não executa mais nenhuma action e fica rodando como um louco. haha...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O papo por aqui tá bom demais :lol:.

 

 

Foxn você se superou, já programa muito, fazendo mágica então não tem pra ninguém. Meu querido amigo, essa foi tudo de bom, ganhei o meu dia. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Brunobispo andava sumido, mas quando aparece é um espetáculo. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

E eu aqui vendendo a minha alma pra aprender esse troço, êeeee vidão :D

 

 

Abraços +++

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou realmente muito grato pela ajuda de todos, mas pelo jeito ainda não consegui entender o funcionamento do AS3 porque não funciona esta bosta !!! :(

 

É pedir muito para que vocês olhem meu arquivo .fla ?

Quem sabe assim dá para desvendar este dilema...

 

Se for possível, segue link para baixar:

anima_menu.fla

( Flash CS4 )

 

Abs

Anderson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema é bem simples, troque isso:

 

addChild(menu);
addChild(menu1);

Por isso:

 

addChild(menu);
menu.addChild(menu1);

 

Seu problema é o seguinte:

 

Você definiu tanto para menu quanto para menu1 para se esconderem quando tirar o mouse deles.

 

O seu problema é que o menu1 está acima dom menu, logo quando você passa o mouse sobre o menu1 ele entende que você tirou o mouse do menu, e assim escondendo ele.

 

Como por coincidência quando ele se esconde você você esta como o mouse sobre o menu etão ele volta, ficando assim abrindo e fechando o menu infinitamente.

 

Agora se você colocar menu1 dentro de menu então ele não irá perder o foco, e assim não vai se fechar quando você passar o mouse sobre menu1.

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.