不同游戏关卡的范围问题

时间:2013-10-14 01:21:53

标签: javascript

我一整天都在试图为我的游戏构建一个改变级别的机制。基本上我有一个世界地图,用户通过点击地图加载不同的级别。但是必须存在范围问题,因为我无法成功加载级别。

这是我的代码:

<body onload="start(world001map);"> <!--start the game with the worldmap -->
</body>

function start(whichLevel) {
    whichLevel();
}; 

function world001map(){ //world001map contains everything needed to build the map

    document.getElementById('click_to_start_area')
        .addEventListener("click", //trying start level001
                          function(){
                              start(level001);//white screen
                              //if I do alert(level001) it shows me the content of the level001 function
                          })
}

function level001(){
    //bunch of staff for level001
}

你能发现薄弱环节吗?处理从其他游戏关卡中加载不同游戏关卡的更好方法是什么?

编辑:

听起来愚蠢的风险(仍然是这样的新手)是否有任何机会在level001的所有代码都循环之后,我们将其“结果”返回给事件调用者?我们只是返回它的“结果”而不是保持在“水平”中,这可能是问题所在?这有什么意义吗?

EDIT2:

这可能会有所帮助:如果我只是在onload =“start(level001);”

之类的onload语句中插入level001

然后level001正确加载。那么为什么从click函数内部调用时它不能正确加载?

EDIT3: 经过更多调试后,我有以下想法: 直接从body onload调用时为什么一切正常工作的最佳解释可能不是函数调用的范围,而是当我直接从body onload加载一个级别时,该页面还没有其他任何操作。我现在开始认为前一级别的“垃圾”不知何故阻止了下一级别的工作。我的主要嫌疑人是画布元素。事实上,当我从world001map中删除与canvas相关的所有内容时,level001将加载(尽管它的运行速度非常慢)。

1 个答案:

答案 0 :(得分:0)

  

处理从其他游戏关卡中加载不同游戏关卡的更好方法是什么?

您可以使用包含所有不同级别的方法的对象。

var levels = {
 'world001map': function () { //world001map contains everything needed to build the map

   document.getElementById('click_to_start_area').addEventListener("click", this.level001)

  },
  'level001': function () {
    //bunch of staff for level001
  }
};

// you may call it using a string
levels['level001']();

将javascript置于html调用之上

 <body onload="levels.world001map();">