HTML5 Canvas游戏有一个错误,当点击时,第一个拼图块会变成另一个拼图?

时间:2012-04-26 08:29:36

标签: javascript canvas

我想我只是需要一个新的眼睛来看待我正在进行的这场比赛。

这是一个滑动图像拼图(你将图像分成碎片并以随机顺序显示回来,然后我删除一块拼图,用户必须点击每个拼图块来移动它,因此将图像重新组合在一起)

完整代码在此处:https://github.com/Integralist/HTML5-Image-Slider-Game

我遇到的错误是你移动的第一块拼图,如果你再次点击它 - 当它移回它刚刚来的位置时 - 拼图块变成另一块(在一个例子中我注意到了)它正在改变为启动游戏而移除的拼图,但这可能只是巧合)。

起初我认为问题出在setInterval方法,它是异步的(我在想,因为我在循环中可能参考循环迭代变得搞砸了,但我现在正在将相关的迭代传递到setInterval和问题仍然存在,因此它不能是那样的。

更新
我仍然认为这个问题与setInterval有关。主要问题是当我们开始将图像绘制到画布上时,原始的x / y坐标显然已经从我们期望的变化。我注意到,当我们点击相同的拼图块将其移回到刚刚进入的位置时,保持我们想要移动的拼图块的坐标的对象是不正确的。我注意到drawnOnCanvasX / Y属性它们应该是什么,它们现在匹配empty_space变量的x / y坐标?事实上这不会一直发生,这让我觉得setInterval没有通过正确的对象从循环传递到在间隔上执行的函数吗?

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

问题是因为我没有从随机数组中删除特定项目。

为了让游戏起作用,我需要移除1个拼图块,这样可以让其他棋子有一个可以移动的空间。问题是我有clearRect我想要的部分,但实际上并没有从数组中删除它。因此,当我循环查找Array中具有那些精确X / Y坐标的项目时,它找到了应该被移除的拼图块项目(并且因为删除的块是随机选择的,这就是为什么有时候首先通过循环找到一块,有时会找到正确的碎片。

基督那很痛苦。