8

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 が示唆するように、画像の高さと幅が利用できないことが原因であることがわかりました... しかし、ここでは drawImage のみが呼び出されますすべての画像がロードされたとき?このエラーは主にモバイル デバイスで発生します

4

1 に答える 1

9

ロード ハンドラへの参照を提供する必要があります。それ以外の場合、関数はすぐに実行されます。使用する:

images[i].onload = onImgLoad;
于 2012-02-10T12:17:56.837 に答える