Javascript子弹功能/弹丸,2D游戏

时间:2014-03-31 04:13:40

标签: javascript 2d 2d-games

我正在尝试修改这段代码,以便我的播放器能够拍摄。我被困在玩家实际上没有拍摄任何东西的地方(没有在空间点击上创建图像,虽然没有错误概述),导弹只需要在我的画布上向上移动。我希望如果这个问题的任何答案也提供某种形式的学习,因为我有兴趣真正理解如何正确地实现这一点,只需要某种快速修复。

1 个答案:

答案 0 :(得分:1)

setInterval调用moveBullet时,this值不会是项目符号,它将是window。尝试使用以下命令将函数绑定到项目符号:

setInterval(bullets[bullets.length - 1].moveBullet.bind(bullets[bullets.length - 1]), 25);

请参阅This link了解详情。

编辑:使用更多修正程序进行更新:

您应该在浏览器中显示控制台(在大多数浏览器中为F12)。这将列出您遇到的一些错误。

  • drawBullet使用未定义的xy。请改用spaceShip.xspaceShip.y
  • newBullet使用angle,无法在任何地方定义
  • newBullet尝试使用movebullet函数。它应该是moveBullet
  • drawImage需要图片,画布或视频元素 - 它不会占用网址。

编辑(2):更多修复 还有几个问题需要解决。

  • 一个是你仍然没有改变对ctx.drawImage的调用来传递图像元素而不是URL。
  • 另一个是你的移动功能是将x和y值乘以速度。这意味着一旦子弹移动,它就会离开屏幕。
  • 第三个问题是render函数更新整个背景,这意味着子弹即使被绘制也会立即被覆盖。您应该将实际的子弹绘图移动到渲染功能。

我已经使用其中的一些修复程序更新了原始的JSFiddle,足以让它绘图(不擦除)。你可以找到它here。我也将它更改为每个空间按下一个子弹(以帮助调试)。

目前,我只是停止绘制背景,以便您可以看到子弹,但是您应该看看将子弹绘图(不是移动)移动到渲染功能。

相关问题