1

我刚刚开始使用 HTML5 画布标签和 javascript 开发一些小游戏。但是当我开始时,我发现当我像这样调用 jquery 就绪处理程序时:

<script>$(function(){ game.init(); })</script>

然后我尝试像这样绘制一个图像(预先存在于我的标记中):

var spaceshipImg = $('#imgSpaceship')[0];
game.context.drawImage(spaceshipImg, 0, 350);

它不会工作,好像 img 还没有加载。但是,如果我调用这个相同的方法,在我的 body 标签中放置一个“onload”,那么它确实有效。根据 jQuery 文档,此时应该加载所有图像,对吗?

4

1 回答 1

3

jQuery 有两种不同的方法用于等待加载所有内容:areadyload方法。该ready方法在使用$(function() {})语法时使用。但是,此方法不会等待加载所有图像(请参阅文档)。为此,您要使用该load方法。您的代码将变为:

<script>
  $(window).load(function () {
    game.init();
  });
</script>

现在该init方法仅在所有资源(包括图像)已加载时调用。

于 2013-05-24T07:07:37.933 回答