2010-03-30 8 views
135

Sto creando uno script con ruby ​​che deve rendere i frame a 24 frame al secondo, ma devo aspettare 1/24th di secondo tra l'invio dei comandi. Qual è il modo migliore per dormire per meno di un secondo?Ruby dorme o rallenta meno di un secondo?

+5

penso che il suo solito meglio non aggiornare la domanda con una risposta? Non scoraggia gli utenti dalla lettura delle risposte effettive? –

+0

Hai ragione, rimosso il mio aggiornamento. –

risposta

184
sleep(1.0/24.0) 

Per quanto riguarda il follow-up domanda se questo è il modo migliore: No, si potrebbe ottenere framerate non-così-lisce perché il rendering di ogni fotogramma non potrebbe assumere la stessa quantità di tempo.

Si potrebbe provare una di queste soluzioni:

  • utilizzare un timer che spara 24 volte al secondo con il codice di disegno.
  • Crea il maggior numero possibile di fotogrammi, crea il movimento in base al tempo trascorso, non per fotogramma.
+14

@Funkodebat Sono quasi sicuro che ogni runtime di base di Ruby fa questo per voi. –

+1

Ruby lo memorizzerà giusto? –

+2

@JosephSilvashy: Non ho informazioni sull'interprete rubino, ma il ruby ​​mri non esegue la memoizzazione di default. Ma spero che faccia questo tipo di ottimizzazione durante la conversione del codice sorgente in codice byte. –

86

Passo galleggiante a dormire, come sleep 0.1

Problemi correlati