ciao,
se posso dire la mia, setInterval non viene eseguito precisamente ogni durata richiesta, ma:
durata_richiesta + tempo_esecuzione_function_di_callback.
Cioe', se p.e. ho una function che prende circa 50 msec per essere eseguita e la chiamo con un intervallo di 1000 msec. avremo una scansione di 1050 msec.
Per ottenere una misurazione ragionevolmente precisa (non piu' approssimata al msec in ogni caso), bisognerebbe misurare il tempo d'esecuzione della function di callback e sottrarlo al tempo richiesto.
Occorre farlo ogni volta perche' come sapete in flash l'esecuzione delle istruzioni avviene in modo seriale, ed e' anche guidato dagli eventi, percio' non e' dato sapere con esattezza quanto tempo e' necessario per eseguire uno statement.
C'e' anche da dire che con setInterval la function di callback "parte" DOPO il tempo richiesto, non subito.
Se vi va di fare questa prova:
codice:
var intervalID:Number;
var sec:Number = 1000;
var timeTracker:Object = {};
timeTracker.oldTime = 0;
timeTracker.currentTime = 0;
timeTracker.pollings = [];
timeTracker.testTimes = 10;
function show_time_spent():Void{
var currentTime = getTimer();
trace("tic tac");
timeTracker.pollings.push(currentTime - timeTracker.oldTime);
timeTracker.oldTime = currentTime;
if(--timeTracker.testTimes == 0){
trace("test duration: " +(currentTime - timeTracker.firstTime));
var pCount = timeTracker.pollings.length;
for(var i:Number = 0; i < pCount; i++) trace(i + ": " +timeTracker.pollings[i]);
clearInterval(intervalID);
}
}
timeTracker.firstTime = getTimer();
intervalID = setInterval(show_time_spent, sec);
in teoria dovremmo avere una misurazione precisa di 10 secondi, cosa che non avviene (a 12fps c'e' circa mezzo secondo di scarto).
Si vede che ogni istruzione porta via tempi leggermente diversi, sempre superiori al tempo richiesto, alzando il framerate i tempi tendono a migliorare per via della maggiore velocita' di esecuzione.
In sostanza l'idea di dare lo start ad una misurazione di tempo e aspettarsi che sia sincronizzata e' da scartare a priori se non vanno prese misure particolari.
Puo' andar bene se i tempi di misurazione sono brevi e portano a scostamenti accettabili, imho e' cmq una soluzione discutibile.

Jaco