image.onload在图像完全加载之前触发

Ani*_*Ani 8 javascript html5 mobile-safari android-browser html5-canvas

我正在使用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';
}
Run Code Online (Sandbox Code Playgroud)

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

Koo*_*Inc 9

您必须提供对负载处理程序的引用.否则,该函数立即执行.使用:

images[i].onload = onImgLoad;
Run Code Online (Sandbox Code Playgroud)