Haber quien me puede echar una manita, please.
Tengo un pelicula en la que tengo varios Mc instanciados con misma clase. Cuando hago click cualquiera de ellos, al "clickado", se le despliega encima un menu desplegable que contiene un combobox y un checkbutton. Este cuadro es un Mc que esta contenido dentro de los otros. Es decir, Mc(s) A que pertenecen a la Clase C --> contienen Mc B.
A mi me gustaria que cuando hiciese click sobre algun Mc A, si en algun otro esta desplegado el Mc B, éste desapareciera.
Mas o menos lo he conseguido pero no del todo bien.
Cuando hago click y aparece el Mc B, si selecciono algo en Combobox no hay ningun problema, o si lo hago en el checkbutton tambien. El problema es cuando algo lo selecciono en segunda instancia. Para que me entendais: Aparece el Mc B y le doy a seleccionar al combo... bien, sin problema. Pero ahora selecciono el check y conforme le haga click encima desaparece el Mc como cuando quiero que desaparezca, y en ese momento no debe desaparecer! Si el orden es al reves (check y depues combo) pasa lo mismo.
En cambio, no desaparece si no le doy click a nada, asi que si voy apretando Mc(s) A sin luego hacer click en los B que aparecen se van quedando todos esperando.
Yo pensaba que esto funcionaria bien controlando el foco, sabiendo donde esta en cada momento.
Os dejo los codigos de la clase y de lo que hay en el frame 1 de los Mc(s) A:
Clase
Código ActionScript :
package clases
{
import flash.events.FocusEvent;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class cuadrado3D extends MovieClip
{
public function cuadrado3D():void
{
addEventListener(MouseEvent.CLICK, onClick);
addEventListener(FocusEvent.FOCUS_OUT, deseleccionar);
}
private function onClick(evento:MouseEvent):void
{
stage.focus = this.casilla;//para darle el foco
mcSelFrame.gotoAndPlay(2);
removeEventListener(MouseEvent.CLICK, onClick);
/*borramos el listener porque sino cuando pulsaramos sobre alguna parte
del menu desplegable volveria a parece éste como la primera vez*/
}
private function deseleccionar(evento:FocusEvent):void
{
if (mcSelFrame.currentFrame == 10)
{
mcSelFrame.gotoAndPlay(11);
}
addEventListener(MouseEvent.CLICK, onClick);
}
}
}Frame
Código ActionScript :
stop();
mcSelFrame.movilMcSelFrame.niveles.addEventListener(Event.CHANGE, selFrame)
function selFrame(evento:Event):void
{
this.gotoAndStop(mcSelFrame.movilMcSelFrame.niveles.selectedIndex + 1);
}Espero que me hayais entendido (
Muchas gracias de antemano porque siempre dais consejos y soluciones muy utiles
Saludos!!!
