Ir para conteúdo

Arquivado

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

Naty

[Resolvido] Mouse Over & Mouse Out

Recommended Posts

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

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

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

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

×

Informação importante

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