codice:
stop();
var filexml = "downloads.xml";
var parser = new XML();
var parsed = new Array();
var scostamento = 60;
trace(parser);
trace(parsed);
function useArray(array) {
for (var i = 0; i<array.length; i++) {
var l = i+1;
var name_mc = "PDF"+i;
pdfico.duplicateMovieClip(name_mc, l);
pdfico._parent[name_mc]._x = 50;
pdfico._parent[name_mc]._y = 50+scostamento*i;
_root[name_mc].nome_link = array[i].nome+" legato a "+array[i].url_;
_root[name_mc].url_link = array[i].url_;
trace(nome_link);
trace(url_link);
_root[name_mc].onPress = function() {
getURL(this.url_link, "_blank");
};
}
}
parser.load(filexml);
parser.onLoad = elabora;
function elabora(success) {
if (parser.load) {
var temp = parser.firstChild.childNodes;
for (var i = 0; i<temp.length; i++) {
parsed.push({id:temp[i].attributes.id, url_:temp[i].childNodes[0].firstChild.toString(), nome:temp[i].childNodes[1].firstChild.toString()});
trace(parsed);
}
useArray(parsed);
}
}
Ho usato il tuo cadice (modificandolo un pò) e ho aggiunto un pò di diagnostica, perchè in questo modo ho potuto vedere che parser e parsed non vengono mai caricati!
Ti ringrazio per l'aiuto che mi stai dando e per la semplificazione delle if, ma a tal proposito devo dire che non ha dato i frutti sperati. Aggiungo che, senza essere polemico, continuo a non capire perchè il codice iniziale si comportasse in quel modo e non ho ricevuto una risposta neanche da chi ha voluto dedicarmi il suo tempo. Sono riuscito dopo svariati tentativi a ottenere qualche risultato, ma l'ultima icona rimane linkata alla penultima e non c'è niente da fare, comunque ci provi la situazione rimane la stessa. Vi posto le modifiche
codice:
stop();
xml_link = "downloads.xml";
ApriXML();
function ApriXML() {
var myarray:Array = new Array();
var myarray2:Array = new Array();
var myarray3:Array = new Array();
var id_download:Array = new Array();
var url_links:Array = new Array();
var nome_link:Array = new Array();
mioxml = new XML();
scostamento = 70;
mioxml.load(xml_link);
mioxml.onLoad = ElaboraXML;
function ElaboraXML(success) {
if (mioxml.loaded) {
myarray = mioxml.childNodes;
trace(myarray.downloads);
for (i=0; i<=myarray.length-1; i++) {
if (myarray[i].nodeName == "downloads") {
myarray2 = myarray[i].childNodes;
for (i=0; i<=myarray2.length-1; i++) {
if (myarray2[i].nodeName == "down") {
//array degli id dei download
id_download.push(myarray2[i].attributes.id);
myarray3 = myarray2[i].childNodes;
for (k=0; k<=(myarray3.length-1); k++) {
if (myarray3[k].nodeName == "url") {
//array degli url
url_links.push(myarray3[k].childNodes.toString());
}
if (myarray3[k].nodeName == "nome") {
//array dei nomi
nome_link.push(myarray3[k].childNodes.toString());
}
}
}
}
}
}
}
trace("id_download elementi = "+id_download.length);
trace("id_download array = "+id_download);
trace("nome_link array = "+nome_link);
trace("url_links array = "+url_links);
var contatore:Number = id_download.length;
for (var a = 0; a<contatore; a++) {
trace("-------------------------------->");
s = a-1;
name_mc = "PDF"+a;
trace(name_mc);
duplicateMovieClip(pdfico, name_mc, a);
setProperty(name_mc, _x, 50);
setProperty(name_mc, _y, 50+scostamento*a);
trace(url_links[s]);
trace("-------------------------------->");
_root[name_mc].nome_link = nome_link[a]+" legato a "+url_links[a];
_root[name_mc].url_link = url_links[s];
trace(name_mc+" = "+url_links[s]);
}
}
}
A me basta capire il perchè; sono sicuro di poter migliorare la complessità del codice, ma la lascerei alla fine questa operazione.
Confido in voi.