Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Canvas的Buggy行为?_Javascript_Html_Webkit_Canvas - Fatal编程技术网

Javascript 使用Canvas的Buggy行为?

Javascript 使用Canvas的Buggy行为?,javascript,html,webkit,canvas,Javascript,Html,Webkit,Canvas,我正在使用html画布制作一个游戏 以下是我的进展: (使用WASD和左/右箭头键) 有助于缩放 我的问题是: 为什么谷歌的影子会闪烁 当油箱转动时镀铬 为什么炮塔图像会闪烁 炮塔转动时的狩猎 为什么它在Firefox中运行良好 坦克图像和炮塔图像是普通的老PNG。阴影是使用这些图像动态创建的。阴影不是图像对象,而是画布元素 闪烁似乎只发生在我改变图像旋转时。当我说闪烁时,我的意思是图像看起来收缩和增长有点非常快。当图像停止旋转时,闪烁再次停止 这是怎么回事?这到底是我这边的问题吗?关于闪烁

我正在使用html画布制作一个游戏

以下是我的进展:

(使用WASD和左/右箭头键) 有助于缩放

我的问题是:

  • 为什么谷歌的影子会闪烁 当油箱转动时镀铬
  • 为什么炮塔图像会闪烁 炮塔转动时的狩猎
  • 为什么它在Firefox中运行良好
坦克图像和炮塔图像是普通的老PNG。阴影是使用这些图像动态创建的。阴影不是图像对象,而是画布元素

闪烁似乎只发生在我改变图像旋转时。当我说闪烁时,我的意思是图像看起来收缩和增长有点非常快。当图像停止旋转时,闪烁再次停止


这是怎么回事?这到底是我这边的问题吗?

关于闪烁的问题,您似乎没有对画布进行双重缓冲。因此,可能是因为地面或阴影在坦克之前绘制,而屏幕刷新在绘制坦克和炮塔之前发生

这个问题有点关于Canvas 2D的双缓冲:

我还想知道上下文的
rotate
translate
方法中的小舍入错误是否会导致图像抖动。对于这些操作,不同的浏览器实现可能具有不同的精度级别。您可以尝试将参数四舍五入到最接近的整数来检查这一点


注:到目前为止,你的游戏看起来很棒-坦克的图形和操控性都非常好。

更新。这个问题已经不存在了!他们一定把它修好了

我在Chrome或Firefox中都看不到任何“闪烁”。我唯一看到的是小炮塔动画。不过干得不错。。对我来说,它看起来很平滑。我看到坦克的炮塔在某种程度上闪烁,使它看起来像旋转的加特林机枪,每辆坦克上都有一个白色的矩形,来回移动。这就是你的意思吗?看起来几乎是故意的…@MooGoo:我想这是故意的。放大,您将看到更多细节。我还想知道这是否就是OP所说的。我禁用了炮塔动画,以使其更易于查看。当你们把坦克换成铬合金的时候,阴影不会闪烁吗?是的。我现在看到了。不幸的是,我不知道是什么原因造成的。祝你好运。谢谢你的帮助。我试着把数字四舍五入,但没用。问题很可能就是你所描述的。这个processing.js库看起来非常整洁。我想我会把它转过去,然后再报告。再次感谢!经过再三考虑。这个processing.js的东西似乎有些过分了。我会给你链接的方法一个开始。啊!我加入了双缓冲,但它仍然在我身上晃动。所以,这似乎不是这个原因,也不是舍入误差造成的。也许这只是谷歌浏览器的一个缺点(