【问题标题】:image.onload fires before image is completely loadedimage.onload 在图像完全加载之前触发
【发布时间】:2012-03-02 21:49:54
【问题描述】:

我正在使用 javascript + canvas 制作游戏。 我使用下面的代码来确保

var imgLoaded = 0;
var imgToLoad = multiImgs;
var onImgLoad = function()
{
   imgLoaded++;
   if(imgLoaded == imgToLoad)
   {
      ctx.drawImage()
   }
}

for(var i = 0; i < multiImgs; i++)
{
  images[i] = new Image();
  images[i].onload = onImgLoad();
  images[i].src = 'images/'+i+'.png';
}

这段代码有时可以正常工作,尤其是。当图像被缓存时。但是,第一次加载时,有时会给出 INDEX_SIZE_ERR: DOM Exception 1 我发现这是由于 Quickredfox 在此answer 中建议的图像的高度和宽度不可用...但是只有在加载所有图像时才调用这里的drawImage? 该错误主要发生在移动设备中

【问题讨论】:

    标签: javascript html mobile-safari html5-canvas android-browser


    【解决方案1】:

    您必须为负载处理程序提供一个引用。否则,该函数立即执行。使用:

    images[i].onload = onImgLoad;
    

    【讨论】:

    • 谢谢。我的严重疏忽!
    • 我想知道为什么我的方法会立即执行。感谢您提供此解决方案!对于 JavaScript 新手来说,这并不是那么明显,尽管我理解它是因为你的评论:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多