2010-08-04 48 views
3

我正在使用html canvas进行游戏。使用画布的越野行为?

这里是我的进步:

http://db.tt/ei3LlR(使用WASD和左/右方向键) 有助于ZOOM。

我的问题是:

  • 为什么在谷歌 铬的影子摇曳在罐体转动?
  • 炮塔转动时,为什么炮塔图像会在 safari中闪烁?
  • 为什么它在Firefox中正常工作?

坦克图像和炮塔图像是普通的旧PNG。阴影是使用这些图像动态创建的。阴影不是图像对象,而是画布元素。

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

这是怎么回事?这完全是个问题吗?

+0

我在Chrome或Firefox中看不到任何“闪烁”。我看到的唯一的东西就是小炮塔动画。但不错的工作,但..对我来说似乎很顺利。 – 2010-08-04 23:58:18

+0

我看到坦克炮塔闪烁的方式,使它看起来像一个旋转的加特林枪,并且每个坦克前后都有一个白色的长方形。你是这个意思吗?几乎看起来有意... – MooGoo 2010-08-05 00:03:16

+0

@MooGoo:我认为这是预期的效果。放大,你会看到更详细的。我还想知道这是OP在谈论什么。 – 2010-08-05 00:06:34

回答

0

UPDATE。问题不再存在!他们必须修好它!

1

关于闪烁的问题,您似乎没有双缓冲您的画布。所以可能出现闪烁现象,因为地面或阴影在坦克和炮塔之前会在坦克前画出并刷新屏幕。

这个问题有一些关于双缓冲与画布2D: Does HTML5/Canvas Support Double Buffering?

我也想知道,如果在上下文中的rotatetranslate方法小舍入误差可能会导致抓货图像的颤动。不同的浏览器实现可能对这些操作具有不同的精确度级别你可以尝试将你的参数四舍五入到最近的整数来检查它。 PS:你的游戏到目前为止看起来不错 - 坦克图形和处理效果非常不错。

+0

谢谢你的帮助。我尝试了四舍五入的数字,但没有帮助。这个问题很可能是你描述的。这个processing.js库看起来非常整齐。我想我会把它移走并报告回来。再次感谢! – Tiby312 2010-08-05 22:32:05

+0

关于第二个想法。这processing.js的事情似乎是矫枉过正。我会给你链接的方法。 – Tiby312 2010-08-05 23:24:17

+0

唉!我加入了双缓冲,并且仍然对我摇摆不定。所以它似乎并不是这个或者是一个导致这个的舍入错误。也许这只是Google Chrome的一个缺点。 :( – Tiby312 2010-08-06 00:22:35