这是我的jsfiddle:http://jsfiddle.net/Z7a5h/
正如你可以看到当玩家没有移动时精灵表的动画太快所以我试图通过声明两个变量lastRenderTime: 0,RenderRate: 50000
但是我的代码没有用,看起来我对我正在使用的算法有误解,所以任何人都可以帮我解决这个问题吗?
if (!this.IsWaiting) {
this.IsWaiting = true;
this.Pos = 1 + (this.Pos + 1) % 3;
}
else {
var now = Date.now();
if (now - this.lastRenderTime < this.RenderRate) this.IsWaiting = false;
this.lastRenderTime = now;
}
答案 0 :(得分:0)
是的,你的逻辑错了。您使用了错误的运算符<
而不是>
。此外,只有在条件得到满足时才需要更新lastRenderTime
,否则它会不断更新,now - this.lastRenderTime
的值永远不会超过20左右。
if (!this.IsWaiting) {
this.IsWaiting = true;
this.Pos = 1 + (this.Pos + 1) % 3;
}
else {
var now = Date.now();
if (now - this.lastRenderTime > this.RenderRate) {
this.IsWaiting = false;
this.lastRenderTime = now;
}
}
这是您更新的fiddle。