我一直在制作HTML5中的画布游戏,并且很多新手。我也想单独使用javascript来创建我的元素(以这种方式嵌入其他网站更容易,我觉得它更干净)。我让我的游戏重新加载以便再次播放,但我希望能够跟踪得分和其他多个变量,而不必将每个变量放入URL(我一直在做),使其看起来像是游戏仍在继续。我还要添加“power ups”以及脚本需要“记住”的其他内容。
无论如何,这是我的问题。当一个玩家杀死另一个玩家时,游戏会自行播放一段时间并让我的电脑变慢,直到我重新加载页面。它为什么这样做?我清除了主要功能的间隔(它循环游戏并保持一切运行),这用于使一切停止移动 - 它不再。这有什么不对?
这是我的游戏:http://dl.dropbox.com/u/11168436/game/game.html
控制:用箭头键移动滑雪者并用M射击(你按照上次移动的方向射击)。滑雪板随着ESDF移动并用Q射击。
感谢您的时间。
答案 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
,您的问题应该消失。