Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Tech
 
problema action script flash mx
Clicca QUI per vedere il messaggio nel forum
ste182
ciao a tutti, sto facendo un mp3 player con flash da inserire nel mio sito... vorrei caricare i file da un file xml ma ho dei problemi.. ecco il codice che ho scritto fin ora:

playlist = new XML();
playlist.ignoreWhite = true;
playlist.onload = function(success) {
_global.songname = [];
_global.songfile = [];
if (success) {
for (var i = 0; i<playlist.firstChild.childNodes.length; i++) {
_global.songname[i] = playlist.firstChild.childNodes[i].attributes.title;
_global.songfile[i] = playlist.firstChild.childNodes[i].attributes.path;
trace("-Titolo: '"+songname[i]+"' -Path: '"+songfile[i]+"'");
}
} else {
titolo = "Error loading XML";
}
};
playlist.load("playlist.xml");
suono = new Sound();
suono.loadSound(_global.songfile[0], false);
titolo = _global.songname[0];
x = Math.round(suono.getBytesLoaded()/suono.getBytesTotal()*100);
perc = x+"%";
_root.barra._xscale = x;
suono.onSoundComplete = suona();
function suona() {
suono.start();
}

come vedete ho usato degli array per memorizzare il titolo e il path del file mp3... solo che questi dati sono visibili all'interno del ciclo for ma al di fuori non li vede e quindi quando vado a fare
suono.loadSound(_global.songfile[0], false);
non legge _global.songfile[0] e quindi mi da errore... non capisco come mai quell'array è vuoto mentre se faccio un trace all'interno del for l'array presenta il path corretto.. help please!!!

fabpicca
Potrebbe trattarsi di un semplice problema di scope (anche se , essendo le variabili globali, non dovrebbero esserci problemi), prova a tirar fuori la dichiarazione dei due array dal "metodo anonimo":


code:
_global.songname = []; _global.songfile = []; playlist = new XML(); playlist.ignoreWhite = true; playlist.onload = function(success) { if (success) { for (var i = 0; i<playlist.firstChild.childNodes.length; i++) { _global.songname[i] = playlist.firstChild.childNodes[i].attributes.title; _global.songfile[i] = playlist.firstChild.childNodes[i].attributes.path; trace("-Titolo: '"+songname[i]+"' -Path: '"+songfile[i]+"'"); } } else { titolo = "Error loading XML"; } }; playlist.load("playlist.xml"); suono = new Sound(); suono.loadSound(_global.songfile[0], false); titolo = _global.songname[0]; x = Math.round(suono.getBytesLoaded()/suono.getBytesTotal()*100); perc = x+"%"; _root.barra._xscale = x; suono.onSoundComplete = suona(); function suona() { suono.start(); }

ste182
non ho capito.. potresti essre più chiaro su quello che dovrei fare?

ste182
ah si ho capito.. si ho già provato a dichiararli fuori ma non cambia niente....

fabpicca
Hai provato a rendere autonoma la funzione estraendola dal gestore dell'evento? Per intenderci una cosa tipo

code:
myFunction(parameters){ ... some code here... } [...] myObject.onLoad= myFunction(parameters);

ste182
se faccio così è peggio... nel trace non appare più niente..

fabpicca
Guarda sto andando un po' alla cieca, dovrei fare delle. prove.
Comunque fossi in te proverei ad evitare l'uso delle globali e rimarrei sul passaggio di variabili per riferimento.

ste182
adesso ti spiego: io ho un interfaccia grafica in flash con i pulsanti play, stop pause ecc... tutto questo sta in un livello.
Poi c'è il livello con il codice che ho postato, in pratica devo leggere un file xml, estrapolarne i dati in modo da salvare in un array il nome e il percorso del file mp3..
quindi per riferimento come faccio? in quel for mi serve mettere nell'array i dati in modo da poterli usare dopo... tipo se premo il tasto next devo riprodurre il file che corrisponde a array[indice++];.. se premo prev--> array[indice--] e così via...
il punto è che quell'array me lo riempe solo nel for, al di fuori me lo svuota...:(

fabpicca
Originally posted by ste182
adesso ti spiego: io ho un interfaccia grafica in flash con i pulsanti play, stop pause ecc... tutto questo sta in un livello.
Poi c'è il livello con il codice che ho postato, in pratica devo leggere un file xml, estrapolarne i dati in modo da salvare in un array il nome e il percorso del file mp3..
quindi per riferimento come faccio? in quel for mi serve mettere nell'array i dati in modo da poterli usare dopo... tipo se premo il tasto next devo riprodurre il file che corrisponde a array[indice++];.. se premo prev--> array[indice--] e così via...
il punto è che quell'array me lo riempe solo nel for, al di fuori me lo svuota...:(


potresti sempre tenere il codice sullo stesso livello dei pulsanti...

ste182
già provato.. niente...

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate