0

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

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

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

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

谢谢你的时间。

4

2 回答 2

4

好的,这就是基本上发生的事情,可变区间存在于不同的范围内。所以你试图清除一个间隔..但它不是正确的范围,所以 varinterval真的从来没有被清除过(你也使用了不正确的语法来清除一个间隔)。

工作演示

您应该了解有关函数范围的更多信息。你有var 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

于 2012-04-05T01:47:51.597 回答
0

这些行可能是罪魁祸首:

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

把那个间隔说出来,30你的问题应该会消失。

于 2012-04-04T23:23:26.687 回答