2012-04-04 94 views
0

我一直在用HTML5制作一个帆布游戏,并且对它来说很新。我想单独使用javascript来创建我的元素(以这种方式嵌入到其他站点更容易,我觉得它更干净)。我为了再次玩游戏而重新加载了游戏,但我希望能够跟踪分数和多个其他变量,而不必将每个变量都放入URL中(我一直在这样做),使其看起来像游戏一样仍在继续。我还将添加“大功告成”以及其他需要由脚本“记住”的事情。我的游戏自己玩?

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

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

控制:移动箭头键滑雪者,并以M拍摄(你,你去年在移动的方向拍摄)。滑雪者随着ESDF移动并用Q拍摄。

感谢您的时间。

回答

0

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

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

把那个间隔多达说,30,你的问题应该消失。

+0

没有运气。一切都像以前一样嗡嗡作响。 – sc8ing 2012-04-04 23:44:58

+0

@sc8ing党。检查递归函数调用。 – 2012-04-04 23:46:26

+0

什么是递归函数调用? – sc8ing 2012-04-04 23:54:26

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