我整天都在试图为我的游戏建立一个关卡改变机制。基本上我有一张世界地图,用户通过点击地图加载不同的级别。但一定存在范围问题,因为我无法成功加载关卡。
这是我的代码:
<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 将会加载(尽管它运行得非常慢)。