Se trata de una clase que carga un listado de urls y descripciones de las mismas desde un xml y construye un menu a partir de ellas. El codigo es el siguiente:
Código :
class porta_enlaces {
private var enlace:String;
private var enlaces:XML;
private var texto:Array=new Array();
private var urls:Array=new Array();
private var target_clip:MovieClip;
private var ref;
function porta_enlaces(destino:MovieClip){
var thisObj:porta_enlaces = this;
target_clip=destino;
ref=this;
enlaces=new XML();
enlaces.ignoreWhite=true;
enlaces.onLoad=function(succes:Boolean){
thisObj.enlaces=this;
thisObj.parsea(succes);
};
enlaces.load("portafolio.xml");
}
private function parsea(exito:Boolean){
if(exito){
trace("El archivo XML se ha cargado con exito");
var espacio:Number=7
for(var cc:Number=0; cc<this.enlaces.firstChild.childNodes.length; cc++){ texto[cc]=this.enlaces.firstChild.childNodes[cc].attributes.descripcion;//.childNodes[i].attributes.descripcion;
urls[cc]=this.enlaces.firstChild.childNodes[cc].attributes.urls;
target_clip.attachMovie("porta_bot", "porta_bot"+cc, target_clip.getNextHighestDepth());
target_clip["porta_bot"+cc]._x=32;
target_clip["porta_bot"+cc]._y=espacio;
espacio=espacio+10;//target_clip["porta_bot"+i]._height;
target_clip["porta_bot"+cc].createTextField("texto", 10,-3,espacio,140,40);
target_clip["porta_bot"+cc].texto.text=cc+" "+texto[cc];
target_clip["porta_bot"+cc].attachMovie("flecha", "flecha", 10+cc);
target_clip["porta_bot"+cc].flecha._x=150;
target_clip["porta_bot"+cc].flecha._y=espacio+3;
var thisXML=this;
trace("La url es: "+urls[cc]);
trace(target_clip["porta_bot"+cc])
target_clip["porta_bot"+cc].flecha.onPress=function(){
getURL(thisXML.urls[cc], "_blank");//¡¡para todos los botones siempre vale el ultimo valor del contador cc!!;
}
}
}
else{trace("Falló la carga de datos.");
}
}
}Todo funciona excepto las urls de los botones que son todas "undefined". El fallo, o la parte que no funciona, parece estar al pasar el contador cc al "interior" de la funcion onPress de los botones, siempre pasa el último valor de cc para todos los botones, es decir, no empieza por 0 luego 1, 2...etc, sino que siempre es 8, que además es uno más que los items del listado xml, por lo que devuelve "undefined:
Código :
target_clip["porta_bot"+cc].flecha.onPress=function(){
getURL(thisXML.urls[cc], "_blank");//¡¡para todos los botones siempre vale el ultimo valor del contador cc!!;
}La verdad es que llevo dos dias dandole vueltas a por qué no funciona esto y estoy ya bloqueado. ¡Si alguien me diera, por lo menos, una pista se lo agradecería un montón!
