Javascript:Image对象没有';似乎无法加载图像

Javascript:Image对象没有';似乎无法加载图像,javascript,html5-canvas,Javascript,Html5 Canvas,我正在尝试创建图像对象,一个用于我的.png游戏资源。makeImage()image maker确实创建了正确的对象,并且它的.src属性具有正确的路径,但它不加载图像img.isReady保留false 我是javascript和编码的初学者,我想知道我是否忽略了函数或对象的某些行为 var assets = {}; function makeImage(path) { var img = new Image(); img.isReady = false; img.

我正在尝试创建图像对象,一个用于我的.png游戏资源。
makeImage()
image maker确实创建了正确的对象,并且它的
.src
属性具有正确的路径,但它不加载图像<代码>img.isReady保留
false

我是javascript和编码的初学者,我想知道我是否忽略了函数或对象的某些行为

var assets = {};

function makeImage(path) {
    var img = new Image();
    img.isReady = false;
    img.onload = function () {
        img.isReady = true;
    };
    img.src = path;
    return img;
}

assets.tileset = makeImage('images/tileset.png');
工作小提琴:

问题是,您在加载图像之前返回图像
img
,这是一个异步过程。您应该将返回嵌套在
onload
函数中。试试这个:

function createImg( path, nodeID ) { 

    var img = new Image(),
        isLoaded = false;

    img.onload = function() {

        document.getElementById( nodeID ).appendChild( img );

        isLoaded = true;

        alert(isLoaded);
    };

    img.src = path;
};
创建该函数并将其附加到img
对象
,并在设置路径且该过程完成后运行该函数。您将看到在某些人的代码中创建函数之前设置的
src
,但这不是首选方法


参考

如何以及何时检查
isReady
属性?浏览器的开发人员控制台中有错误吗?
isReady
我将在以后渲染时使用。我不使用开发人员控制台,但我只是尝试了一下,没有什么特别之处。只有关于
«window.controllers»
过时的看似无关的注释。这就解决了问题。谢谢。你能详细介绍一下异步过程吗?是什么使设置到源图像的路径不同于其他值?JavaScript是一种单线程语言。只要设置
src
,即使图像未附加到DOM,浏览器也会加载图像。这有时被称为“延迟加载”。因此,当您设置图像源时,尽管您只是将
字符串
附加到对象,但浏览器实际上正在加载图像本身,这可能需要一些时间,具体取决于图像的大小。因此,浏览器异步执行此操作,以允许其他进程同时运行。您应该研究ajax和承诺。我想他们会很有帮助的,干杯!再次感谢。行。