Naty 3 Denunciar post Postado Novembro 4, 2011 Olá, pessoal.... Tenho um dúvida que já revirei o PAI Google e este forum e não encontrei nada que me ajudasse a resolver... Estou tentando fazer um menu com submenu, este submenu é ativo com MouseOver e MouseOut. Porém quando utilizo o MouseOut não consegui acessar os bts que estão no submenu, pois ele logicamente desaparece pois esta sendo chamada a função MouseOut. Minha dúvida é onde ao certo devo colocar o MouseOut, pois se eu colocar no bt_empresa logicamente ele não ficará acessível. Abaixo segue partes do meu código: function vaiHome (evt:Object) { addChildAt(conteiner1, 4) // conteiner1.addChild(bt_home) bt_home.x = 28 bt_home.y = 139 animaTween = new Tween(bt_home, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); bt_home.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiEmpresa) bt_home.addEventListener(MouseEvent.CLICK, clicou) } function vaiEmpresa (evt:TweenEvent) { conteiner1.addChild(bt_empresa) bt_empresa.x = 150 bt_empresa.y = 139 animaTween = new Tween(bt_empresa, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); bt_empresa.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiAtuacao) // bt_empresa.addEventListener(MouseEvent.CLICK, clicou) bt_empresa.addEventListener(MouseEvent.MOUSE_OVER, overEmp) bt_empresa.addEventListener(MouseEvent.MOUSE_OUT, outEmp) } function vaiAtuacao (evt:TweenEvent) { conteiner1.addChild(bt_atuacao) bt_atuacao.x = 316 bt_atuacao.y = 139 animaTween = new Tween(bt_atuacao, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); bt_atuacao.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiObras) bt_atuacao.addEventListener(MouseEvent.CLICK, clicou) } function vaiObras (evt:TweenEvent) { conteiner1.addChild(bt_obras) bt_obras.x = 541 bt_obras.y = 139 animaTween = new Tween(bt_obras, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); bt_obras.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiClientes) bt_obras.addEventListener(MouseEvent.CLICK, clicou) } function vaiClientes (evt:TweenEvent) { conteiner1.addChild(bt_clientes) bt_clientes.x = 665 bt_clientes.y = 139 animaTween = new Tween(bt_clientes, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); bt_clientes.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiContato) bt_clientes.addEventListener(MouseEvent.CLICK, clicou) } function vaiContato (evt:TweenEvent) { conteiner1.addChild(bt_contato) bt_contato.x = 808 bt_contato.y = 144 animaTween = new Tween(bt_contato, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); bt_contato.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiTexto) animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiFoto1) bt_contato.addEventListener(MouseEvent.CLICK, clicou) } // CHAMA A ANIMAÇÃO DO SUBMENU function overEmp (evt:MouseEvent) { conteiner1.addChild(fundo) fundo.x = 113 fundo.y = 180 fundo.width = 164 fundo.height = 165 animaTween = new Tween(fundo, "height", Regular.easeOut, 0, 165, 0.1, true); animaTween = new Tween(fundo, "alpha", Strong.easeOut, 0, 1, 0.1, true); antiGC.push(animaTween); fundo.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiEmpresa2) } // CHAMA O TEXTO E BTS DO SUBMENU function vaiEmpresa2 (evt:TweenEvent) { conteiner1.addChild(mc_empresa) mc_empresa.x = 115 mc_empresa.y = 190 animaTween = new Tween(mc_empresa, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); mc_empresa.meuTween = animaTween // mc_empresa.buttonMode = true mc_empresa.useHandCursor = true // mc_empresa.addEventListener(MouseEvent.CLICK, clicou) } // RECOLHE O SUBMENU function out (evt:MouseEvent) { if(mc_empresa) if(mc_empresa.parent) mc_empresa.parent.removeChild(mc_empresa) // animaTween = new Tween(fundo, "height", Regular.easeOut, 165, 0, 0.1, true); animaTween = new Tween(fundo, "alpha", Strong.easeOut, 1, 0, 0.1, true); antiGC.push(animaTween); fundo.meuTween = animaTween } Compartilhar este post Link para o post Compartilhar em outros sites
Daniel o rei 14 Denunciar post Postado Novembro 4, 2011 Antes de recolher o menu, no out você pode antes com o hitTestPoint ver se o mouseX e mouseY ta colidindo com submenu Compartilhar este post Link para o post Compartilhar em outros sites
Naty 3 Denunciar post Postado Novembro 8, 2011 Antes de recolher o menu, no out você pode antes com o hitTestPoint ver se o mouseX e mouseY ta colidindo com submenu Então Daniel obrigada pela resposta... eu até consegui montar o hitTestPoint, mais o problema é que eu acho que não estou conseguindo visualizar onde eu realmente tenho q chamar o OUT. No código abaixo eu coloquei desta forma, consegui que qdo tirasse o mouse do menu acessasse o submenu, mais qdo eu chamo a função OUT ai não funciona mais... eu tiro o mouse do menu e já nem consegui mais acessar o submenu... Coloquei uma parte do código de um só menu... // CHAMA O MENU function vaiEmpresa (evt:TweenEvent) { conteiner1.addChild(bt_empresa) bt_empresa.x = 150 bt_empresa.y = 139 animaTween = new Tween(bt_empresa, "alpha", Strong.easeOut, 0, 1, 0.5, true); antiGC.push(animaTween); bt_empresa.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiAtuacao) // bt_empresa.addEventListener(MouseEvent.CLICK, clicou) bt_empresa.addEventListener(MouseEvent.MOUSE_OVER, overEmp) } //CHAMA O SUBMENU NO OVER function overEmp (evt:MouseEvent) { conteiner1.addChild(fundo) fundo.x = 113 fundo.y = 180 fundo.width = 164 fundo.height = 166 fundo.hitTestPoint(113, 180, false) // animaTween = new Tween(fundo, "height", Regular.easeOut, 0, 165, 0.1, true); animaTween = new Tween(fundo, "alpha", Strong.easeOut, 0, 1, 0.1, true); antiGC.push(animaTween); fundo.meuTween = animaTween // animaTween.addEventListener(TweenEvent.MOTION_FINISH, vaiEmpresa2) // mc_atuacao.visible = false fundo.visible = true } function vaiEmpresa2 (evt:TweenEvent) { conteiner1.addChild(mc_empresa) mc_empresa.x = 115 mc_empresa.y = 190 animaTween = new Tween(mc_empresa, "alpha", Strong.easeOut, 0, 1, 0.2, true); antiGC.push(animaTween); mc_empresa.meuTween = animaTween // mc_empresa.visible = true mc_empresa.buttonMode = true mc_empresa.useHandCursor = true mc_empresa.hitTestPoint(115, 190, false) // mc_empresa.addEventListener(MouseEvent.CLICK, clicou) mc_empresa.addEventListener(MouseEvent.MOUSE_OUT, out) } //CHAMA O OUT function out (evt:MouseEvent) { fundo.visible = false mc_empresa.visible = false mc_atuacao.visible = false } Agora não entendo pq qdo não chamo a função OUT mesmo assim acaba funcionando o OUT, vamos dizer que "automático" do flash pq ele muda de menu e some o submenu, porém no último menu não some.... Vou deixar o link: site_test Compartilhar este post Link para o post Compartilhar em outros sites
Naty 3 Denunciar post Postado Dezembro 5, 2011 Poxa gente niguém pode me ajudar ?? Bom quebrando a cabeça consegui chegar neste lógica... function over (evt:MouseEvent) { if (evt.target == bt_empresa) { conteiner2.addChild(mc_empresa) mc_empresa.x = 113 mc_empresa.y = 180 animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 0, 164, 0.5, true); antiGC.push(animaTween); // mc_empresa.visible = true mc_empresa.buttonMode = true mc_empresa.useHandCursor = true // mc_empresa.addEventListener(MouseEvent.CLICK, clicou) mc_empresa.addEventListener(MouseEvent.MOUSE_OUT, out) } if (evt.target == bt_atuacao) { conteiner2.addChild(mc_atuacao) mc_atuacao.x = 277 mc_atuacao.y = 180 animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 0, 110, 0.5, true); antiGC.push(animaTween); // mc_atuacao.visible = true mc_atuacao.buttonMode = true mc_atuacao.useHandCursor = true // mc_atuacao.addEventListener(MouseEvent.CLICK, clicou) mc_atuacao.addEventListener(MouseEvent.MOUSE_OUT, out) } if (evt.target == bt_obras) { conteiner2.addChild(mc_obras) mc_obras.x = 503 mc_obras.y = 180 animaTween = new Tween(mc_obras, "height", Regular.easeOut, 0, 77, 0.5, true); antiGC.push(animaTween); // mc_obras.visible = true mc_obras.buttonMode = true mc_obras.useHandCursor = true // mc_obras.addEventListener(MouseEvent.CLICK, clicou) mc_obras.addEventListener(MouseEvent.MOUSE_OUT, out) } if (evt.target == bt_home && mc_empresa.visible == true ) { animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 164, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove1) } if (evt.target == bt_empresa && mc_atuacao.visible == true) { conteiner2.addChild(mc_empresa) mc_empresa.x = 113 mc_empresa.y = 180 animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 0, 164, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove2) // mc_empresa.visible = true mc_empresa.buttonMode = true mc_empresa.useHandCursor = true // mc_empresa.addEventListener(MouseEvent.CLICK, clicou) mc_empresa.addEventListener(MouseEvent.MOUSE_OUT, out) // animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 110, 0, 0.5, true); } if (evt.target == bt_atuacao && mc_empresa.visible == true) { conteiner2.addChild(mc_atuacao) mc_atuacao.x = 277 mc_atuacao.y = 180 animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 0, 110, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove1) // mc_atuacao.visible = true mc_atuacao.buttonMode = true mc_atuacao.useHandCursor = true // mc_atuacao.addEventListener(MouseEvent.CLICK, clicou) mc_atuacao.addEventListener(MouseEvent.MOUSE_OUT, out) // animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 164, 0, 0.5, true); } if (evt.target == bt_obras && mc_atuacao.visible == true) { conteiner2.addChild(mc_obras) mc_obras.x = 503 mc_obras.y = 180 animaTween = new Tween(mc_obras, "height", Regular.easeOut, 0, 77, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove2) // mc_obras.visible = true mc_obras.buttonMode = true mc_obras.useHandCursor = true // mc_obras.addEventListener(MouseEvent.CLICK, clicou) mc_obras.addEventListener(MouseEvent.MOUSE_OUT, out) // animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 110, 0, 0.5, true); } if (evt.target == bt_atuacao && mc_obras.visible == true) { conteiner2.addChild(mc_atuacao) mc_atuacao.x = 277 mc_atuacao.y = 180 animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 0, 110, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove3) // mc_atuacao.visible = true mc_atuacao.buttonMode = true mc_atuacao.useHandCursor = true // mc_atuacao.addEventListener(MouseEvent.CLICK, clicou) mc_atuacao.addEventListener(MouseEvent.MOUSE_OUT, out) // animaTween = new Tween(mc_obras, "height", Regular.easeOut, 77, 0, 0.5, true); } if (evt.target == bt_clientes && mc_obras.visible == true) { animaTween = new Tween(mc_obras, "height", Regular.easeOut, 77, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove3) } } // function out (evt:MouseEvent) { if (evt.target.name == "btO3" ) { animaTween = new Tween(mc_obras, "height", Regular.easeOut, 77, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove3) } if (evt.target.name == "btA4" ) { animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 110, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove2) } if (evt.target.name == "btE5" ) { animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 164, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove1) } } // function remove1 (evt:TweenEvent) { mc_empresa.visible = false } function remove2 (evt:TweenEvent) { mc_atuacao.visible = false } function remove3 (evt:TweenEvent) { mc_obras.visible = false } Porém ainda não esta perfeito preciso que qdo o mouse saia de cima dos mc_empresa, mc_atuacao e mc_obras ative a função out. Só que se coloco para atiavr a função out no event dos próprios mc fica dando bugg pois não consegue clicar no mc ele já ativa a função out.... A questão é onde colocar para ativar a função out já tentei evt.target == stage mais não deu certo... Me deem uma luz por favor !!! Bjinhos Bom o pessoal não respondeu meu tópico mais vou postar a solução, pois sei que há mta gente na net que talves tenha a mesma dúvida que eu !! function over (evt:MouseEvent) { if (evt.target == bt_empresa) { conteiner2.addChild(mc_empresa) mc_empresa.x = 113 mc_empresa.y = 180 animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 0, 164, 0.5, true); antiGC.push(animaTween); // mc_empresa.visible = true mc_empresa.buttonMode = true mc_empresa.useHandCursor = true // mc_empresa.addEventListener(MouseEvent.CLICK, clicou) mc_empresa.addEventListener(MouseEvent.ROLL_OUT, out) } if (evt.target == bt_atuacao) { conteiner2.addChild(mc_atuacao) mc_atuacao.x = 277 mc_atuacao.y = 180 animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 0, 110, 0.5, true); antiGC.push(animaTween); // mc_atuacao.visible = true mc_atuacao.buttonMode = true mc_atuacao.useHandCursor = true // mc_atuacao.addEventListener(MouseEvent.CLICK, clicou) mc_atuacao.addEventListener(MouseEvent.ROLL_OUT, out) } if (evt.target == bt_obras) { conteiner2.addChild(mc_obras) mc_obras.x = 503 mc_obras.y = 180 animaTween = new Tween(mc_obras, "height", Regular.easeOut, 0, 77, 0.5, true); antiGC.push(animaTween); // mc_obras.visible = true mc_obras.buttonMode = true mc_obras.useHandCursor = true // mc_obras.addEventListener(MouseEvent.CLICK, clicou) mc_obras.addEventListener(MouseEvent.ROLL_OUT, out) } if (evt.target == bt_home && mc_empresa.visible == true ) { animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 164, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove1) } if (evt.target == bt_empresa && mc_atuacao.visible == true) { conteiner2.addChild(mc_empresa) mc_empresa.x = 113 mc_empresa.y = 180 animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 0, 164, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove2) // mc_empresa.visible = true mc_empresa.buttonMode = true mc_empresa.useHandCursor = true // mc_empresa.addEventListener(MouseEvent.CLICK, clicou) mc_empresa.addEventListener(MouseEvent.ROLL_OUT, out) // animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 110, 0, 0.5, true); } if (evt.target == bt_atuacao && mc_empresa.visible == true) { conteiner2.addChild(mc_atuacao) mc_atuacao.x = 277 mc_atuacao.y = 180 animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 0, 110, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove1) // mc_atuacao.visible = true mc_atuacao.buttonMode = true mc_atuacao.useHandCursor = true // mc_atuacao.addEventListener(MouseEvent.CLICK, clicou) mc_atuacao.addEventListener(MouseEvent.ROLL_OUT, out) // animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 164, 0, 0.5, true); } if (evt.target == bt_obras && mc_atuacao.visible == true) { conteiner2.addChild(mc_obras) mc_obras.x = 503 mc_obras.y = 180 animaTween = new Tween(mc_obras, "height", Regular.easeOut, 0, 77, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove2) // mc_obras.visible = true mc_obras.buttonMode = true mc_obras.useHandCursor = true // mc_obras.addEventListener(MouseEvent.CLICK, clicou) mc_obras.addEventListener(MouseEvent.ROLL_OUT, out) // animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 110, 0, 0.5, true); } if (evt.target == bt_atuacao && mc_obras.visible == true) { conteiner2.addChild(mc_atuacao) mc_atuacao.x = 277 mc_atuacao.y = 180 animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 0, 110, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove3) // mc_atuacao.visible = true mc_atuacao.buttonMode = true mc_atuacao.useHandCursor = true // mc_atuacao.addEventListener(MouseEvent.CLICK, clicou) mc_atuacao.addEventListener(MouseEvent.ROLL_OUT, out) // animaTween = new Tween(mc_obras, "height", Regular.easeOut, 77, 0, 0.5, true); } if (evt.target == bt_clientes && mc_obras.visible == true) { animaTween = new Tween(mc_obras, "height", Regular.easeOut, 77, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove3) } } // function out (evt:MouseEvent) { if (mc_obras.visible == true) { animaTween = new Tween(mc_obras, "height", Regular.easeOut, 77, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove3) } if (mc_atuacao.visible == true ) { animaTween = new Tween(mc_atuacao, "height", Regular.easeOut, 110, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove2) } if (mc_empresa.visible == true ) { animaTween = new Tween(mc_empresa, "height", Regular.easeOut, 164, 0, 0.5, true); antiGC.push(animaTween); animaTween.addEventListener(TweenEvent.MOTION_FINISH, remove1) } } // function remove1 (evt:TweenEvent) { mc_empresa.visible = false } function remove2 (evt:TweenEvent) { mc_atuacao.visible = false } function remove3 (evt:TweenEvent) { mc_obras.visible = false } Qual foi a solução: Alterar o addEventListener(MouseEvent.MOUSE_OUT, out) para addEventListener(MouseEvent.ROLL_OUT, out), com isso alterei a lógica da função out !! E resolvido !!! Compartilhar este post Link para o post Compartilhar em outros sites