我正在将精灵渲染到画布元素,并且我试图避免子像素定位以避免图像模糊(基于此处的信息:http: //seb.ly/2011/02/html5-canvas-sprite-优化/)。
当我尝试像这样重新分配 x 位置时,会出现我的问题:
this.pos.x = ~~ this.pos.x;
这使我的精灵永远不会在屏幕上移动,并将其位置记录到控制台显示我被困在起始位置。
现在,如果我不对我的位置执行按位运算符,只需记录输出:
console.log(~~ this.pos.x);
我可以看到按位运算符按预期执行,显示:
100
101
102
...
注意:我的动画是独立于帧率的,因此我将它乘以一个增量并得到如下浮点数:
100.64
101.36
102.04
102.68
103.32000000000001
104.00000000000001
104.68000000000002
...
我在这里更新位置,并且只在这里:
this.pos.x += BE.delta.getSeconds() * this.accelleration;
因此
this.pos.x += ~~ (BE.delta.getSeconds() * this.accelleration);
不管用