Javascript:Image对象没有';似乎无法加载图像
我正在尝试创建图像对象,一个用于我的.png游戏资源。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.
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和承诺。我想他们会很有帮助的,干杯!再次感谢。行。