JavaScript 图像加载器不工作

标签 javascript jquery html

我正在尝试为我的游戏制作非常简单的图像加载器,但我不知道为什么这不起作用。这是我的代码:

window.onload = function() {
    var canvas = document.getElementById('gameCanvas');
    var ctx = canvas.getContext('2d');

    var images = [];

    function loadImages(imageFiles) {
        var loadedImages = [];

        for(var i = 0; i < imageFiles.length; i++) {
            var image = new Image();

            image.onload = function() {
                alert("Loaded");
            }

            image.src = imageFiles[i];
            loadedImages[i] = image;
        }

        return loadedImages;
    }

    function init() {
        images = loadImages(['img/1.png', 'img/2.png']);

        main();
    }

    function main() {  
        ctx.drawImage(images[1], 0,0);  
    }

    init();
}

我看到的只是没有图像的空白 Canvas 。

最佳答案

Use Promise, The Promise object is used for deferred and asynchronous computations. A Promise represents an operation that hasn't completed yet, but is expected in the future.

<强> Promise.all()Promise.all(iterable) 方法返回一个 promise ,当可迭代参数中的所有 promise 都已解决时,该 promise 就会解决。

function loadImages(imageFiles) {
  var promiseArr = [];
  for (var i = 0; i < imageFiles.length; i++) {
    var eachPromise = new Promise(function(resolve, reject) {
      var image = new Image();
      image.onload = function() {
        alert('Loaded!');
        resolve();
      }
      image.src = imageFiles[i];
    });
    promiseArr.push(eachPromise);
  }
  return promiseArr;
}

function init() {
  var AllImages = ['https://www.google.co.in/logos/doodles/2016/earth-day-2016-5741289212477440.2-5643440998055936-ror.jpg', 'https://www.google.co.in/logos/doodles/2016/earth-day-2016-5741289212477440.3-5700735861784576-ror.jpg'];
  var allPromises = loadImages(AllImages);
  Promise.all(allPromises).then(function() {
    alert('All Loaded');
    main();
  });
}

function main() {}
init();

关于JavaScript 图像加载器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36792984/

相关文章:

javascript - 如何访问 jquery 对话框引用的 div 元素?

javascript - javaScript 中的类 C 代码片段定义

javascript - 用引号关闭 id - 连接 jquery

html - dropbox.com 的多文件上传功能如何运作?

javascript - 如何在 vanilla js 中实现 Observable 行为

c# - 使用 jquery 和 c# mvc 将表数据返回为文件

jquery - 带 HTTPS POST 的移动应用程序安全性

JQuery 动态添加的 DOM 丢失(不)CSS 样式

javascript - iFrame 填充核心标题面板内的 div

html - 将显示应用于某些第 n 个 child