Comunidad de diseño web y desarrollo en internet online

Meter attachMovie en un bucle

Citar            
MensajeEscrito el 30 Oct 2007 05:43 pm
Buenas a todos... como se puede observar soy nuevo en el foro aunque no en el mundo del flash. Vengo del multimedia, mas concretamente de graficos en 3D para contenidos multimedia. Algunos estaran pensado: "que rayao, y que hace programando en flash"... Bueno, cosas de la vida.

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.
:cool:

Por Owowo

1 de clabLevel



Genero:Masculino  

Madrid

msie
Citar            
MensajeEscrito el 29 Nov 2007 09:27 am
Chic@s, pregunte algo absurdo o es que nadie tiene idea??? :oops:

Agradeceria aunque fuera una respuesta sobre el asunto...

Gracias!
:lol:

Por Owowo

1 de clabLevel



Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 29 Nov 2007 06:54 pm
Prueba así:

Código :

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, {_x:enlace_posx[i], _y:enlace_posy[i], _width:enlace_escx[i], _height:enlace_escy[i], link:enlace_enlace[i], linkType:enlace_tipo[i]});

btn[i].onRelease = function() {
getURL(this.link, this.linkType);
};
}

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 05 Dic 2007 12:33 pm
lo solucione hacer tiempo pero mil gracias de todos modos Friky!!

De todos modos me apunto el aporte... cuando sake dos minutos miro si funciona y te digo.

Gracias otra vez majo!!!

^^ ^^

Por Owowo

1 de clabLevel



Genero:Masculino  

Madrid

firefox

 

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