ava.rj 0 Denunciar post Postado Agosto 25, 2010 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
Matheus Brito 12 Denunciar post Postado Agosto 25, 2010 Tem stop no ultimo frame? Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Agosto 25, 2010 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
ava.rj 0 Denunciar post Postado Agosto 26, 2010 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
Elektra 102 Denunciar post Postado Agosto 26, 2010 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
Foxn 3 Denunciar post Postado Agosto 26, 2010 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 ). 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 . 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
brunobispo 20 Denunciar post Postado Agosto 26, 2010 É 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 ). 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 .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
Elektra 102 Denunciar post Postado Agosto 26, 2010 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
ava.rj 0 Denunciar post Postado Agosto 27, 2010 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
Foxn 3 Denunciar post Postado Agosto 27, 2010 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
ava.rj 0 Denunciar post Postado Agosto 27, 2010 Funcionou direitinho aqui, muito obrigado. Abs Anderson Compartilhar este post Link para o post Compartilhar em outros sites