我确定我在这里没有遵循正确的游戏编码惯例,但是我在学习的过程中非常了解。
参考网址:http://www.rustyeight.com/game
我有一个JSON提要,我正在使用它作为基于精灵的地图渲染引擎的一部分。我正在使用JQuery的$ .getJSON方法从feed(maps.js)中提取信息并用其内容填充数组。
然后我用draw函数调用这个函数。
function draw(ctx){
map(ctx);
makeMan(ctx);
}
我发现奇怪的是我没有在$ .getJSON函数中声明数组,当我尝试访问它们时,所有数组项都会显示为未定义。所以我只是将变量调用和所有其他进程移动到函数中,它似乎工作正常。
我还有一个从对象中绘制角色数据的函数。
我现在遇到的问题是,无论makeMan()函数调用的位置是什么,角色总是在地图下呈现。我有一种感觉,这个问题是基于我无法访问json调用之外的地图数组这一事实。我也猜测每次调用绘图函数时强制上下文都是非常低效的。
请参阅上面的链接获取代码。如果您需要任何澄清,请告诉我。我把头发拉出来了!
答案 0 :(得分:1)
由于map()函数使用AJAX,因此它变为异步。因此,当浏览器关闭执行HTTP请求时,它会继续运行并执行脚本的其余部分。在这种情况下,它呈现了男人。
所以正在发生的事情是整个脚本执行,呈现人,然后httpRequest完成并在他之上呈现地图。
你应该在AJAX调用之后调用makeMan(),指定一个回调函数在完成后执行,或者只是在地图AJAX函数的末尾内联它。
我记得jQuery.when,这正是你所需要的。