Comunidad de diseño web y desarrollo en internet online

Superposición y mouseEnabled

Citar            
MensajeEscrito el 08 Jul 2010 12:02 am
Buenas!
Llevo unos dias dándole vueltas al tema y lo que leo no parece corresponderse con los resultados que obtengo, a ver quién me ilumina.

Pongamos que tengo un cuadrado, y encima de él, dentro de su superficie, pongo un círculo bastante más pequeño.
Al cuadrado le asocio un evento ROLL_OVER. Lo que quiero es que cuando se pasa el puntero por el área del cuadrado, aparezca un tercer movieclip, digamosle triángulo (que en un futuro tendrá botones dentro de él, pero eso es otro tema) que tapará a ambos hasta que el puntero se salga de nuevo del área del cuadrado.

cuadrado.addEventListener(MouseEvent.ROLL_OVER, onOver);
cuadrado.addEventListener(MouseEvent.ROLL_OUT, onOut );

Así que en la función que dispara el ROLL_OVER simplemente hacía el triángulo visible, ya que según leo, la instancia que queda por encima de todas en un caso de superposición -es decir, la más visible- es la que recibe los eventos, y yo los he añadido por el orden: 1ºcuadrado, 2º círculo y 3º triángulo. Pero obtenía un parpadeo constante del triángulo cuando el cursor entraba en el área del cuadrado y probé cosas como ésta:

private function onOver(e:Event) : void {
triangulo.visible = true;
cuadrado.mouseEnabled = false;
circulo.mouseEnabled = false;
}

private function onOut(e:Event) : void {
triangulo.visible = false;
cuadrado.mouseEnabled = true;
circulo.mouseEnabled = true;
}

"When an InteractiveObject instance’s mouseEnabled variable is set to false, it receives no mouse-input event notifications.". Pero nada, sigue el parpadeo. He estado probando otras cosas que he visto por ahí, pero no acababan de funcionar del todo bien, porque si bien ya no estaba el parpadeo, cuando se pasaba por la zona en la que se intuía el círculo, el parpadeo vuelve momentáneamente.

Los ejemplos que he encontrado no acababan de ajustarse a mi caso, ya que no contemplan el caso del círculo.
¿Qué hago mal?

Por Eldelgas

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Jul 2010 04:23 am
He probado a adaptar a mi caso la solución que da LongeVie en
http://foros.cristalab.com/botones-dentro-de-una-animacion-t68158/

private function onOver(e:Event) : void {
var visibilidad:Boolean = mouseX < cuadrado.width && mouseY < cuadrado.height && mouseX > 0 && mouseY > 0;
triangulo.visible = !visibilidad;
circulo.visible = visibilidad;
cuadrado].visible = visibilidad;
}

private function onOut(e:Event, indice:Number) : void {
var visibilidad:Boolean = mouseX < cuadrado.width && mouseY < cuadrado.height && mouseX > 0 && mouseY > 0;
triangulo.visible = visibilidad;
cuadrado.visible = !visibilidad;
venfermos[indice].visible = !visibilidad;
}


¡Pero permanece el dichoso parpadeo! o_O

Por Eldelgas

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Jul 2010 05:27 am
algo tendrá que ver , no revise bien tu codigo pero el parámetro que recibe un handler debe coincidir con el tipo de evento que activo el listener, en tu caso le pones Event cuando debe ser MouseEvent.

Código ActionScript :

private function onOver(e:MouseEvent):void //e:MouseEvent
{
   //...
}


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 10 Jul 2010 07:40 pm
No se si estaria muy equivocado o no, pero Jonathan tiene razon aunque esto no deberia ocurrir, ya que si no estoy muy equivocado la Clase MouseEvent desciende y/o hereda de event, por lo que tan solo se hace un "polimorfismo" . Realmente la instancia declarada como Event para recibir el MouseEvent no es incorrecto y no deberia dar problema, aunque si no hay ninguna razon para hacer esta conversion, se deberia utilizar MouseEvent en vez de Event.

Un saludo!

Por astroluzz

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 11 Jul 2010 06:45 am
Bueno, antes de nada gracias a ambos por responder.
Probé a cambiar lo del tipo de evento que decía maneuver. Es verdad, parece que no iban por ahí los tiros, porque la cosa seguía igual. Al final lo he resuelto de otro modo, con hitTest. No sé si será la forma más óptima o si las hay más sencillas pero por lo menos no me hace cosas raras. Allá va el código y los archivos por si alguien le interesa:
...
cuadrado = new Cuadrado();
cuadrado.x = 222;
cuadrado.y = 95;
addChild( cuadrado );

circulo = new Circulo();
circulo.x = 222;
circulo.y = 95;
addChild( circulo );

triangulo = new Triangulo();
triangulo.x = 222;
triangulo.y = 95;
addChild( triangulo );

addEventListener(Event.ENTER_FRAME,onEnterFrame);
}

function onEnterFrame(event:Event){
var testOverTriangulo:Boolean = (cuadrado.hitTestPoint(mouseX, mouseY, true));
if (testOverTriangulo && !overTriangulo) {
trace("dentro del cuadrado");
triangulo.visible = true;
overTriangulo = true;
} else if (!testOverTriangulo && overTriangulo) {
trace("fuera del cuadrado");
overTriangulo = false;
triangulo.visible = false;
}
};


Los archivos:
[url=http://www.megaupload.com/?d=J5NWE62J][/url]

Por Eldelgas

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Nov 2017 09:52 am
20171127 leilei3915
adidas yeezy shoes
kate spade handbags
moncler jackets
nike shoes on sale
canada goose
moncler coats
ugg outlet
michael kors official site
michael kors outlet
ray-ban sunglasses
moncler outlet
kate spade outlet online store
polo ralph lauren shirts
adidas nmd
pandora charms
michael kors outlet stores
adidas yeezy shoes
ugg outlet
ray ban wayfarer
cheap jerseys
coach outlet
mbt outlet
mlb jerseys
oakley sunglasses
canada goose outlet
ugg boots
coach outlet online
canada goose outlet
nike air max
cheap oakley sunglasses
michael kors outlet
pandora jewelry
michael kors outlet
lunette ray ban
coach outlet online
supreme outlet
canada goose outlet
fitflop sale
nmd adidas
ralph lauren
pandora bracelet
coach outlet
clarks shoes
ugg outlet
canada goose
oakley sunglasses wholesale
mcm outlet
ugg boots
fitflops outlet
ralph lauren shirts
uggs outlet
ugg outlet
christian louboutin
kate spade handbags
polo outlet
canada goose jackets
uggs outlet
pandora charms
moncler outlet
uggs outlet
canada goose outlet
polo outlet
pandora outlet
coach outlet
coach factory outlet
michael kors outlet online
puma shoes
mulberry uk
canada goose jackets
adidas yeezy boost
ugg boots
ugg outlet online clearance
uggs outlet
nike outlet
kate spade outlet store
fred perry shirts
canada goose outlet
polo outlet
polo ralph lauren outlet
ugg boots clearance
canada goose outlet
adidas nmd r2
valentino outlet
cheap nhl jerseys
canada goose jackets
canada goose outlet
uggs outlet store
ugg outlet
uggs outlet
uggs outlet
polo ralph lauren outlet
adidas superstar
ferragamo outlet
canada goose uk
canada goose outlet online
michael kors outlet clearance
cheap oakley sunglasses
oakley sunglasses
asics outlet
canada goose outlet online
adidas outlet
ugg outlet online
michael kors outlet online
ugg boots
coach outlet online
tory burch sandals
coach outlet canada
cheap ugg boots
canada goose
oakley sunglasses
ugg boots clearance
canada goose
michael kors outlet online
adidas ultra boost
ferragamo shoes
canada goose outlet
coach outlet store online
jordan shoes
polo ralph lauren
cheap nfl jerseys
nike shoes
cheap ugg boots
cheap ugg boots
uggs outlet
canada goose outlet store
prada outlet online
michael kors outlet
ugg boots clearance
michael kors outlet
longchamp outlet
polo ralph lauren
nfl jerseys
cheap oakley sunglasses
michael kors outlet
michael kors outlet
cheap oakley sunglasses
ralph lauren shirts
[url=http://www.polooutletonlinestore.us.com ]polo ralph lauren[/url]
ugg boots clearance
christian louboutin shoes
uggs outlet online
nike outlet store
coach outlet store online
cheap ray bans sunglasses
canada goose outlet
mont blanc
ugg outlet online
ralph lauren uk
coach outlet store online
polo outlet

Por leilei3915

72 de clabLevel



 

firefox

   Página 1 de 1

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.