Flash: timer sui frame

Di: mettt | 26/09/2020 18:47:17
E' possibile con uno script passare da un frame all'altro impostando un tempo di attesa? grazie

Risposte



Ciao mettt,
con Flash è possibile (quasi) tutto!
Per creare un’attesa io userei getTimer().
getTimer() restituisce il tempo, in millisecondi, del runtime del filmato.
Se questo timer deve servire per molti fotogrammi puoi impostare un ciclo (setInterval) all'inizio dell’esecuzione, in maniera che il tuo filmato venga controllato dal ciclo anziché dal framerate della linea temporale.
Ti mostro un esempio di quello che sto dicendo...
- Crea un nuovo filmato.
- Inserisci una casella di testo dinamico e assegna come nome istanza “theFrame”, ci dirà a che frame ci troviamo.
- Inserisci una casella di testo dinamico e assegna come nome istanza “theTime” ci dirà quanti secondi mancano al cambio di fotogramma.
- Inserisci sul primo fotogramma questo script:
stop();
var myStartTime = getTimer();
myIntervals = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0.5, 1, 2);
function frameTimer() {
var doveSono = _currentframe;
_root.theFrame.text = doveSono;
var finoAQuando = myStartTime+(myIntervals[doveSono-1]*1000);
var quandoSono = getTimer();
var quantoManca = Math.ceil((finoAQuando-quandoSono)/1000)
_root.theTime.text = quantoManca;
if (quandoSono>=finoAQuando) {
myStartTime = getTimer();
nextFrame();
}
}
var timerInterval = setInterval(frameTimer, 1);
- Assicurati che il filmato sia lungo almeno 20 fotogrammi e che le due caselle di testo siano presenti per tutta la lunghezza del filmato.
Prova il filmato e ti accorgerai che l’avanzamento non dipende dal framerate del filmato ma che ogni fotogramma rimane fisso per tanti secondi quanti ne abbiamo impostati all’interno dell’Array “myIntervals”.

Di: Professore | 26/09/2020 18:47:17


Grazie me lo studierò

Di: mettt | 26/09/2020 18:47:17