Come si guida un ciclo di animazione o un loop di gioco a 60 fps in un'applicazione Web Dart?Come faccio a guidare un ciclo di animazione a 60fps con Dart e il web?
risposta
Utilizzare window.animationFrame
, il cugino basato sul futuro del tradizionale window.requestAnimationFrame
.
Dart si è spostato per utilizzare Future e Stream come modi più orientati agli oggetti per gestire operazioni asincrone. Il callback basato su callback (vecchio 'n sballato) requestAnimationFrame
viene sostituito dal futuro (nuova hotness) animationFrame
.
Ecco un esempio:
import 'dart:html';
gameLoop(num delta) {
// do stuff
window.animationFrame.then(gameLoop);
}
void main() {
window.animationFrame.then(gameLoop);
}
La firma del animationFrame
assomiglia:
Future<num> animationFrame();
Si noti come animationFrame
restituisce un futuro che completa con un num
, che detiene una "ad alte prestazioni timer "simile a window.performance.now()
. Lo num
è un delta crescente in modo monotono tra ora e quando la pagina è iniziata. Ha una risoluzione di microsecondi.
The Future termina proprio prima che il browser riguardi il disegno della pagina. Aggiorna lo stato del tuo mondo e disegna tutto quando questo Futuro è completato.
È necessario richiedere un nuovo futuro da animationFrame su ogni frame, se si desidera che l'animazione o il ciclo continui. In questo esempio, i registri gameLoop()
vengono notificati sul fotogramma dell'animazione successivo.
BTW c'è un pacchetto di pub denominato game_loop, che potrebbe risultare utile.
- 1. Laggy progetto vuoto a 60FPS
- 2. Aggiungi casuale a un ciclo di animazione css3
- 3. Come connettere il database mysql a Dart?
- 4. CORS with Dart, come faccio a farlo funzionare?
- 5. Come faccio a "leggere" una variabile su un ciclo while
- 6. come distribuire l'applicazione web dart con i pacchetti dart?
- 7. Come connettere Dart a SQLite?
- 8. Server Dart con componenti Web
- 9. Come faccio a dissolvere il testo in un UILabel?
- 10. Come aggiungere HTML arbitrario a un elemento di Dart?
- 11. come faccio a verificare se un'entità è il primo elemento di un ciclo foreach
- 12. Come faccio a vettorizzare questo ciclo in numpy?
- 13. Come faccio a creare un elenco a discesa dinamico con react-bootstrap
- 14. Esecuzione di dart in un server Web
- 15. Map da Class a Dart
- 16. Come faccio a riscrivere un ciclo for con una dipendenza condivisa usando gli attori
- 17. Come faccio a rendere il plugin maven jetty a conoscenza di una directory web aggiuntiva?
- 18. Animazione animazione a livello di scorrevole android
- 19. Come faccio a catturare schermate di pagine Web usando ruby e un server unix?
- 20. Come faccio a determinare con precisione la posizione di un visitatore sul mio sito web?
- 21. Come accedere a un sito Web con python e mechanize
- 22. Come aggiungere righe a TableElement in Dart?
- 23. Come faccio a smettere di web.config eredità
- 24. Come faccio a racchiudere un java.util.concurrent.Future in un futuro Akka?
- 25. Come faccio a inviare un modulo con un LinkButton?
- 26. Come faccio a impedire a iOS di convertire un piccolo triangolo con il triangolo a destra in un triangolo rettangolo?
- 27. Come faccio a utilizzare setTimout in CoffeeScript all'interno di un ciclo
- 28. Come faccio a rebase il primo commit?
- 29. Animazione scala a scatti
- 30. Come faccio a leggere e inode traslazione
Questo link game_loop dà un 404 – Tgwizman
Ecco la posizione corretta http://pub.dartlang.org/packages/game_loop – Tgwizman
Come viene interrotto il file requestAnimationFrame? Osservando la fonte, il animationFrame basato su Future crea un completamento che viene attivato utilizzando il callback requestAnimationFrame originale (vecchio 'n busted)? – paulecoyote