Salve a tutti, ho uno script javascript che mi controlla un filmato flash:
questo script fa caricare un filmato, e tramite il ciclo while aspetta che si posizioni sull'etichetta "arrivo", quando si è posizionato fa partire la funzione risultato, se non si posiziona entro 60 secondi, parte la funziona errore.codice:if (livelloN == "_level1"){ filmato.TSetProperty("_level0", 7, 0); filmato.LoadMovie(1, movie); posizione = filmato.TCurrentLabel("_root._level1"); while (posizione != "arrivo"){ posizione = filmato.TCurrentLabel("_root._level1"); timer = new Date(); var tempoFinale = Math.round(timer.getTime()/1000); if (tempoFinale-tempoIniziale == 60){ Errore(); break; } if (posizione == "arrivo"){ risultato(filmato,movie,movieRif,x,y,livelloN); break; } } }
Lo script per quanto composto in modo sciocco, è funzionante su ie, mentre su ff, mi appare una finestra con su scritto che un'applicazione sta rallentando uno script... premere continua o ferma lo script.
per ovviare a ciò mi è stato suggerito di usare il setInterval, ho inserito questo al posto del ciclo while:
Lo script è molto più veloce ed efficente, ma purtroppo non si ferma abbastanza, quando posizione=arrivo, passa subito alla funzione risultato, con i relativi parametri, ma non mi funziona, in quanto il filmato non è ancora pronto.codice:i = 0 x = window.setInterval(function() { posizione = filmato.TCurrentLabel("_root._level1"); i++; if (posizione == "arrivo"){ risultato(filmato,movie,movieRif,x,y,livelloN); clearInterval(x) } if(i==10){ Errore() } }, 5000);
Spero di aver spiegato tutto chiaramente.
Come posso fare per rimediare???

Rispondi quotando

