Examples - Add Variable Timestep Example
This commit is contained in:
parent
5b7552216d
commit
828b39c1d0
4 changed files with 54 additions and 4 deletions
48
lib/src/03-VariableTimestep.dart
Normal file
48
lib/src/03-VariableTimestep.dart
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
//void main() {
|
||||
// double lastTime = performance.now();
|
||||
// while(true) {
|
||||
// double currentTime = performance.now();
|
||||
// double delta = currentTime - lastTime;
|
||||
//
|
||||
// update(delta);
|
||||
//
|
||||
// lastTime = currentTime;
|
||||
// }
|
||||
//}
|
||||
|
||||
import 'dart:html';
|
||||
import 'package:browserloop/game/Game.dart';
|
||||
import 'package:browserloop/game/LoopExample.dart';
|
||||
|
||||
/// The Variable Timestep Loop.
|
||||
///
|
||||
/// Perhaps one of the most widely used loops
|
||||
/// in games for many years. Many game frameworks
|
||||
/// make use of a loop similar to this.
|
||||
class VariableTimestep implements LoopExample {
|
||||
Game game;
|
||||
num id;
|
||||
Stopwatch elapsed = new Stopwatch();
|
||||
|
||||
VariableTimestep(Game this.game) {
|
||||
elapsed.start();
|
||||
window.requestAnimationFrame(eventloop);
|
||||
}
|
||||
|
||||
void eventloop(num time) {
|
||||
int dt = elapsed.elapsedMilliseconds;
|
||||
game.update(dt);
|
||||
game.draw();
|
||||
elapsed.reset();
|
||||
|
||||
id = window.requestAnimationFrame(eventloop);
|
||||
}
|
||||
|
||||
void stop() {
|
||||
window.cancelAnimationFrame(id);
|
||||
}
|
||||
|
||||
void start() {
|
||||
window.requestAnimationFrame(eventloop);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue