Jquery $ .getJSON无法在HTML5 Canvas中正确呈现

时间:2011-09-20 21:42:10

标签: jquery json html5 canvas

我确定我在这里没有遵循正确的游戏编码惯例,但是我在学习的过程中非常了解。

参考网址:http://www.rustyeight.com/game

我有一个JSON提要,我正在使用它作为基于精灵的地图渲染引擎的一部分。我正在使用JQuery的$ .getJSON方法从feed(maps.js)中提取信息并用其内容填充数组。

然后我用draw函数调用这个函数。

function draw(ctx){
    map(ctx);
    makeMan(ctx);
}

我发现奇怪的是我没有在$ .getJSON函数中声明数组,当我尝试访问它们时,所有数组项都会显示为未定义。所以我只是将变量调用和所有其他进程移动到函数中,它似乎工作正常。

我还有一个从对象中绘制角色数据的函数。

我现在遇到的问题是,无论makeMan()函数调用的位置是什么,角色总是在地图下呈现。我有一种感觉,这个问题是基于我无法访问json调用之外的地图数组这一事实。我也猜测每次调用绘图函数时强制上下文都是非常低效的。

请参阅上面的链接获取代码。如果您需要任何澄清,请告诉我。我把头发拉出来了!

1 个答案:

答案 0 :(得分:1)

由于map()函数使用AJAX,因此它变为异步。因此,当浏览器关闭执行HTTP请求时,它会继续运行并执行脚本的其余部分。在这种情况下,它呈现了男人。

所以正在发生的事情是整个脚本执行,呈现人,然后httpRequest完成并在他之上呈现地图。

你应该在AJAX调用之后调用makeMan(),指定一个回调函数在完成后执行,或者只是在地图AJAX函数的末尾内联它。

我记得jQuery.when,这正是你所需要的。