【发布时间】:2015-01-23 22:31:31
【问题描述】:
我正在尝试在一些画布动画旁边创建一个计时器。动画使用设置为 60 fps 的函数循环来刷新画布并重绘对象。我能想到制作秒表的唯一方法是使用相同的循环来获取每帧的毫秒数并将其添加到文本对象中。我只是想知道是否有更有效的方法来做到这一点?
var frame = 0;
canvas.setLoop(function() {
if(particle.x < 1080 && particle.x > 0){
frame++;
particle.x = 540 + (acc*frame*frame)/120;
gField.t.text = "g = 9.81ms⁻²\nMass = "+particle.mass+"kg\nF = ma\nFrame: " + frame + "\nDistance: " + (particle.x - 540).toFixed(1);
stopwatch();
}else{
canvas.timeline.stop();
}
})
var sec = 0;
var tsec = 0;
var hsec = 0;
function stopwatch(){
hsec+= (5/3);
if(hsec >= 10){
tsec++;
hsec = hsec -10;
}
if(tsec >= 10){
sec++;
tsec = tsec-10;
}
time.text = (sec)+":"+(tsec)+(hsec).toFixed(0);
}
var clicks = 0
control.button.bind("click tap", function() {
clicks++;
if(clicks == 1){
canvas.timeline.start();
}else{
clicks = 0;
canvas.timeline.stop();
}
})
附:这是一个动力学模拟程序。我正在为画布动画使用 oCanvas 库。
【问题讨论】:
-
请记住,您没有 60fps 的保证。如果 f.e. 它可以下降。你的客户端电脑很慢。你必须用 Date() 检查时间以获得正确的时间。
-
也许这可能有助于获取客户端的 FPS:stackoverflow.com/a/4787460/648350
标签: javascript jquery html animation canvas