我的游戏自己玩?
我一直在用HTML5制作一个帆布游戏,并且对它来说很新。我想单独使用javascript来创建我的元素(以这种方式嵌入到其他站点更容易,我觉得它更干净)。我为了再次玩游戏而重新加载了游戏,但我希望能够跟踪分数和多个其他变量,而不必将每个变量都放入URL中(我一直在这样做),使其看起来像游戏一样仍在继续。我还将添加“大功告成”以及其他需要由脚本“记住”的事情。我的游戏自己玩?
无论如何,这是我的问题。当一个玩家杀死另一个玩家时,游戏会自动播放一段时间,并使我的电脑非常慢,直到我重新加载页面。它为什么这样做?我清除了主函数的时间间隔(循环游戏并保持所有内容都在运行),并用于使所有内容停止移动 - 它不再执行。这里有什么问题?
这是我的游戏:http://dl.dropbox.com/u/11168436/game/game.html
控制:移动箭头键滑雪者,并以M拍摄(你,你去年在移动的方向拍摄)。滑雪者随着ESDF移动并用Q拍摄。
感谢您的时间。
这些线路可能是罪魁祸首:
var interval = window.setInterval(main, 1);
把那个间隔多达说,30
,你的问题应该消失。
好吧,继承人基本上发生了什么,可变区间存在于不同的范围。所以你试图清除间隔..但它不是正确的范围,所以var interval
真的永远不会被清除(也是你使用不正确的语法来清除间隔)。
你应该了解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
没有运气。一切都像以前一样嗡嗡作响。 – sc8ing 2012-04-04 23:44:58
@sc8ing党。检查递归函数调用。 – 2012-04-04 23:46:26
什么是递归函数调用? – sc8ing 2012-04-04 23:54:26