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