我的游戏会玩吗?

时间:2012-04-04 23:15:17

标签: javascript html5 canvas

我一直在制作HTML5中的画布游戏,并且很多新手。我也想单独使用javascript来创建我的元素(以这种方式嵌入其他网站更容易,我觉得它更干净)。我让我的游戏重新加载以便再次播放,但我希望能够跟踪得分和其他多个变量,而不必将每个变量放入URL(我一直在做),使其看起来像是游戏仍在继续。我还要添加“power ups”以及脚本需要“记住”的其他内容。

无论如何,这是我的问题。当一个玩家杀死另一个玩家时,游戏会自行播放一段时间并让我的电脑变慢,直到我重新加载页面。它为什么这样做?我清除了主要功能的间隔(它循环游戏并保持一切运行),这用于使一切停止移动 - 它不再。这有什么不对?

这是我的游戏:http://dl.dropbox.com/u/11168436/game/game.html

控制:用箭头键移动滑雪者并用M射击(你按照上次移动的方向射击)。滑雪板随着ESDF移动并用Q射击。

感谢您的时间。

2 个答案:

答案 0 :(得分:4)

好的,基本上发生了什么,变量区间存在于不同的范围内。所以你试图清除一个间隔..但它不是正确的范围,因此var interval实际上从未被清除(你也使用了不正确的语法来清除间隔)。

<强> Working Demo

您应该详细了解function scope。您在一些不同的位置有var interval,一个是全局的,一个是函数中的一个。这将创建两个名为interval的单独变量。下面是一个简单的例子,

var a = 10;
function(){
    var a = 1;
    console.log(a);
   // a will equal 1

}

console.log(a);
// a will equal 10

无论如何,我所做的修复它被宣布为interval的全局变量,该变量是现在唯一用于清除ect的变量。

我看到的下一个问题是你正在使用

interval = window.clearInterval(interval)

你只需要打电话

window.clearInterval(interval)

这是一个很好的第一次尝试,只是继续学习:)。希望您了解我在工作示例中所做的工作。只需将其与您的代码进行比较,只有一些与变量范围相关的细微差别interval

答案 1 :(得分:0)

这些界线可能是罪魁祸首:

var interval = window.setInterval(main, 1);

将该时间间隔告知30,您的问题应该消失。