Currando para un cliente se me ocurre la siguiente duda:
Tengo una serie de contenidos que quiero cargar en un flash por medio de un xml (en concreto estos contenidos serian: el nombre, posicion, link y color de distintos botones que se van a distribuir por mi escena).
Para ello me creo arrays en los que metere la informacion de cada boton. Seguidamente cargo el xml y hago attachMovie para cada btn que quiero crear en escena asi como definir sus caracteristicas antes citadas. El problema viene cuando lo quiero hacer con una sola funcion, me explico con el código:
--------- FRAME 1 -------
////////////// Arrays ///////////
enlace_forma = new Array();
enlace_posx = new Array();
enlace_posy = new Array();
enlace_escx = new Array();
enlace_escy = new Array();
enlace_enlace = new Array();
enlace_tipo = new Array();
///ruta xml///
filepath_xml = "xml/";
// Load variables del XML
var datos = new XML();
datos.ignoreWhite = true;
datos.onLoad = function() {
var nodes:Array = this.firstChild.childNodes;
for (var i = 0; i<nodes.length; i++) {
enlace_forma.push(nodes[i].attributes.forma);
enlace_posx.push(nodes[i].attributes.posx);
enlace_posy.push(nodes[i].attributes.posy);
enlace_escx.push(nodes[i].attributes.escx);
enlace_escy.push(nodes[i].attributes.escy);
enlace_enlace.push(nodes[i].attributes.enlace);
enlace_tipo.push(nodes[i].attributes.tipo);
}
//trace(nodes.length)
};
datos.load(filepath_xml+"xml_datos.xml");
-------- FRAME 2 ---------
////////// carga de biblioteka ///////////////
attachMovie(enlace_forma[0], "btn0", 1);
attachMovie(enlace_forma[1], "btn1", 2);
attachMovie(enlace_forma[2], "btn2", 3);
attachMovie(enlace_forma[3], "btn3", 4);
/////// enlaces //////
btn0._x = enlace_posx[0];
btn0._y = enlace_posy[0];
btn1._x = enlace_posx[1];
btn1._y = enlace_posy[1];
btn2._x = enlace_posx[2];
btn2._y = enlace_posy[2];
btn3._x = enlace_posx[3];
btn3._y = enlace_posy[3];
////// escalas ////////
btn0._width = enlace_escx[0];
btn0._height = enlace_escy[0];
btn1._width = enlace_escx[1];
btn1._height = enlace_escy[1];
btn2._width = enlace_escx[2];
btn2._height = enlace_escy[2];
btn3._width = enlace_escx[3];
btn3._height = enlace_escy[3];
///////////// funciones de elementos atachados //////
btn0.onRelease = function (){
getURL(enlace_enlace[0], enlace_tipo[0])
};
btn1.onRelease = function (){
getURL(enlace_enlace[1], enlace_tipo[1])
};
btn2.onRelease = function (){
getURL(enlace_enlace[2], enlace_tipo[2])
};
btn3.onRelease = function (){
getURL(enlace_enlace[3], enlace_tipo[3])
};
-------- STOP -----
Esto FUNCIONA... el problema esta cuando, pensando en automatizarlo (por si en un futuro quiero hacer 8 btns en vez de 4 y no quiero o no puedo abrir el flash). La que creía mi solucion era meter todo lo del Fram 3 en un bucle (for), quedando de la siguiente manera:
num_btn= 8 //// Cuando todo esto funcione esta cifra la obtendra de xml ///
for (var i:Number = 0; i<num_btn; i++) {
attachMovie(enlace_forma[i], "btn"+i, i);
btn[i]._x = enlace_posx[i];
btn[i]._y = enlace_posy[i];
btn[i]._width = enlace_escx[i];
btn[i]._height = enlace_escy[i];
btn[i].onRelease = function() {
getURL(enlace_enlace[i], enlace_tipo[i]);
};
}
No os parece mas fácil??? .... seguro que es una chorrada pero, porque no funciona??? realmente puedo meter un attachMovie en un bubcle? sera mas bien cuestion de que está tomando los datos de un xml? o es que el autor (o sea yo) es medio tonto y no se entera?? jajaja.... esta es la opcion mas segura pero por si acaso pido ayuda a los sabios (o sea vosotros)...
Mil gracias por anticipado.
Si no se entiende decidme e intento explicarme mejor.
