我确信我在这里没有遵循正确的游戏编码约定,但我在学习的过程中学到了很多。
参考网址:http://www.rustyeight.com/game
我有一个JSON提要,我正在使用它作为基于sprite的地图渲染引擎的一部分。我使用JQuery的$.getJSON方法从提要(maps.js)中提取信息并用其内容填充数组。
然后我用一个绘图函数调用这个函数。
function draw(ctx){
map(ctx);
makeMan(ctx);
}
我发现奇怪的是我没有在$.getJSON函数中声明数组,当我试图访问它们时,所有的数组项都会显示为未定义。因此,我只是将变量call和所有其他进程移动到函数中,它似乎工作得很好。
我还有一个从对象中提取字符数据的函数。
我现在遇到的问题是,无论makeMan()函数调用位于何处,字符始终呈现在地图下。我有一种感觉,这个问题是基于我不能在json调用之外访问map数组的事实。我还猜测,每次我调用绘图函数时,都必须将上下文强制到函数中,这真的很低效。
有关代码,请参阅上面的链接。如果您需要任何澄清,请告诉我。我要把我的头发拉出来!
发布于 2011-09-21 06:05:59
因为您的map()函数使用AJAX,所以它是异步的。因此,当浏览器停止执行HTTP请求时,它会继续执行脚本的其余部分。在这种情况下,它呈现的是人。
因此,整个脚本执行,渲染man,然后httpRequest完成并在他上面渲染地图。
应该在AJAX调用之后调用makeMan(),方法是指定一个回调函数在完成后执行,或者只需在map AJAX函数的末尾内联它。
我刚刚想起了jQuery.when,这正是你所需要的。
https://stackoverflow.com/questions/7492142
复制相似问题