我如何开车在60fps的动画循环或游戏循环在飞镖Web应用程序?
Answer 1:
使用window.animationFrame
,传统的基于未来的表弟window.requestAnimationFrame
。
省已转移到使用未来和流随着越来越多的面向对象的方法来处理异步操作。 基于回调(旧“N捣毁) requestAnimationFrame
是由基于未来的(新的辣味)取代animationFrame
。
下面是一个例子:
import 'dart:html';
gameLoop(num delta) {
// do stuff
window.animationFrame.then(gameLoop);
}
void main() {
window.animationFrame.then(gameLoop);
}
的签名animationFrame
是这样的:
Future<num> animationFrame();
请注意如何animationFrame
返回以完成一个未来num
,它拥有“高性能定时器”类似window.performance.now()
该num
现在当页面开始之间单调递增的增量。 它具有微秒分辨率。
未来完成权利之前,浏览器是对画页。 更新你的世界的国家和未来完成时绘制的一切。
你必须在每一帧请求animationFrame一个新的未来,如果你想要的动画或循环继续。 在这个例子中, gameLoop()
寄存器的下一个动画帧上被通知。
BTW有一个酒吧包名为game_loop ,你可能会发现有用。
文章来源: How do I drive an animation loop at 60fps with Dart and the web?