加载所有图像后如何发出警报?

2022-01-17 00:00:00 javascript html5-canvas 2d-games

我正在构建一个 JavaScript 游戏,我想在加载所有图像后发出警报.我试过这段代码,但它不起作用:

I'm building a JavaScript game and I want to alert after all images are loaded. I tried this code but it's not working:

function loadEveryThing() {
  var imgNumber = 0;

  img1 = new Image();
  img1.src = "1.png"
  img1.onload = function() {
    imgNumber = imgNumber + 1;
  }

  img2 = new Image();
  img2.src = "2.png"
  img2.onload = function() {
    imgNumber = imgNumber + 1;
  }

  img3 = new Image();
  img3.src = "3.png"
  img3.onload = function() {
    imgNumber = imgNumber + 1;
  }

  if (imgNumber == 3) alert("done")
}

推荐答案

图片正在异步加载.您的检查器代码将在任何图像加载之前运行.我建议您对每个图像加载进行检查.比如:

The images are loading asynchronously. Your checker code will run before any of the images get loaded. I suggest you do the checks for each image load. Something like:

function loadImages(urls,callback){

  //counter
  var counter = 0;

  //checking function
  function check(){
    counter++;
    if(urls.length === counter) callback();
  }

  //for each image, attach the handler and load
  for(var i = urls.length; i--;){
    img = new Image();
    img3.onload = check;
    img.src= urls[i]
  }

}

loadImages([/*array of urls*/],function(){
  //this function fires when all images have loaded
});

相关文章