0

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

这是我的代码:

<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 的所有代码循环通过之后,我们将其“结果”返回给事件调用者?而不是停留在“级别001”中,我们只是返回它的“结果”,这可能是这里的问题吗?这有任何意义吗?

编辑2:

这可能会有所帮助:如果我只是在 onload-statement 中插入 level001,例如 onload="start(level001);"

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

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

4

1 回答 1

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();">
于 2013-10-14T01:32:47.520 回答