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?