primero pido paciencia si es que esto no va en este apartado del foro pero como ya dije soy novato.
quiero pedirles echen un ojo a este codigo y me digan en que estoy fallando por favor.
tratare de ser lo mas descriptivo posible, descripcion:
tengo un boton creado en la biblioteca el cual vincule con nombre de clase menuBtn y de clase base le puse una que formé para que haga el roll over y el roll out y esa clase extiende de movieClip. (hasta aqui no hay ningun problema).
Luego con codigo coloco ese boton en la biblioteca, le pongo etiqueta de un xml, lo duplico, le doy un event listener para que reaccione al click y lo coloco dentro de un contenedor tipo sprite llamado menuBtns el cual tambien creo con codigo y coloco en el escenario hasta ahi todo va bien (bueno al menos eso creo), el problema viene en esto:
mi objetivo es que cuando uno de los botones sea presionado quiero que se desactive pero active los otros dos si esque estaban desactivados, es decir cuando yo oprimo el boton 1 ese se desactiva pero boton 2 y boton 3 siguen funcionando entonces cuando yo oprimo boton 2 se desactiva pero activa el boton 1 y el 3 pues sigue estando activado, ese es mi problema intente con mouseEnabled pero solo funciona con el target osea el que dispara el evento. pongo el codigo a continuacion:
Código :
//carga del xml de los botones
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, xmlComplete);
loader.load(new URLRequest("xmls/menu.xml"));
function xmlComplete(event:Event):void
{
var myXML:XML = new XML(event.target.data);
// creo el sprite que contendra los botones
var menuBtns:Sprite = new Sprite();
menuBtns.x = 259;
menuBtns.y = 166;
addChild(menuBtns);
// creo los botones
for (var i:int = 0; i < myXML.boton.length(); i++)
{
var btn:menubtn = new menubtn();
btn.titulo.textoBtn.text = myXML.boton[i].@texto;
btn.titulo.textoBtn.autoSize = TextFieldAutoSize.LEFT;
var posicionInicial:Number = (btn.width * i);
if(i==0){
btn.x = posicionInicial;
var posicionPrimerBoton:Number = (btn.x + btn.width) + 10;
}else{
btn.x = posicionPrimerBoton;
posicionPrimerBoton = (btn.x + btn.width) + 10;
}
btn.ruta = myXML.boton[i].@seccion;
btn.addEventListener(MouseEvent.CLICK, onClick);
menuBtns.addChild(btn);
// esto lo puse segun para poner el nombre de instancia de cada boton asi lo hacia en as2 pero creo que no funcionó
btn.name = "btn" + i;
}
// esta es la funcion que se manda llamar cuando se hace click sobre alguno de los botones
function onClick(event:MouseEvent): void
{
var btnNombres:Array = new Array("btn0","btn1","btn2");
for(var i:Number = 0; i < btnNombres.length; i++)
{
// aqui intento hacer lo de activar y desactivar
if(event.target.name != btnNombres[i])
{
// ese trace lo puse para ver que si los activa o no y la logica funciona bien pero al momento de aplicarla ......
trace(menuBtns.getChildByName(btnNombres[i]).name + " esta activado");
// a qui es precisamente donde creo que esta el error pero no se como resolverlo
menuBtns[btnNombres[i]].mouseEnabled = true;
}
else
{
event.target.mouseEnabled = false;
}
}
}
}
bueno de entrada no me marca ningun error de sintaxis al correrlo y lo corre bien pero cuando presiono algun boton me devuelve de error esto:
btn1 esta activado
ReferenceError: Error #1069: No se encontró la propiedad btn1 en flash.display.Sprite y no hay ningún valor predeterminado.
at MethodInfo-4()
nota: lo de btn1 esta activado no hagan caso eso es del trace que meti.
de antemano agradesco a los que le hechen un ojo y me puedan ayudar, como lo dije antes soy nuevo en as3 asi que agrdeceria si no usan un lenguaje tan tecnico ni clases ya que esto lo tengo en la linea principal de tiempo y aun no se manejar bien las clases aun sigo intentando aprender y no quiero darme por vencido.
muchas gracias
