Javascript对象未将图像设置为数组
Javascript object not setting image to an array
我正在开发HTML5游戏,我有一个函数应该加载图像并将其附加到数组中,以便稍后显示到画布上。加载函数的代码在这里。。。
function loadImage(url) {
box.images.total++;
image = new Image();
image.src = url;
image.onload = function () {
box.images.loaded++;
};
box.images[box.images.length] = image;
}
持有数组的代码在这里。。。
var box = new Object({});
box.images = new Array([]);
渲染代码在这里。。。
loadImage("images/background.png");
while (box.images.loaded<box.images.total) {console.log("lol");}
box.ctx.drawImage(box.images[0], 0, 0);
我希望这将尝试加载图像集,并每次增加计数器。然后,当加载图像时,它会增加加载的计数器,然后一旦所有代码都运行了,其余的代码就会运行。但我收到一个错误,说"找到了与提供的签名匹配的函数",并且数组似乎包含一个空元素。
此外,我在Xubuntu 12.04 上使用Chrome
更新原来图像被放在索引1中,而不是0,这就是为什么没有加载图像的原因。但它仍然无法渲染图像,请帮忙。
另一个更新因此,total和loaded都是NaN,因此while循环根本无法加载。我把它们设置为零,wile循环没有终止,它破坏了我的浏览器选项卡。
您需要某种Promise
或回调函数。为了简单起见,我建议回调。示例:
var box = {};
box.images = [];
box.images.total = box.images.loaded = 0;
function loadImage(url, callback) {
box.images.total++;
image = new Image();
image.onload = function () {
box.images.loaded++;
// We call something when the image has loaded
callback();
};
image.src = url;
box.images[box.images.length] = image;
}
function loadAllImages(urls, callback) {
// Loop through each image and load url
for (var i = 0; i < urls.length; ++i) {
var url = urls[i];
loadImage(url, function() {
// When everything loads, call callback
console.log(box.images.total, box.images.loaded);
if (box.images.loaded === box.images.total) callback();
});
}
}
window.onload = function() {
box.ctx = document.querySelector("canvas").getContext("2d");
loadAllImages([
"https://lh4.googleusercontent.com/-rNTjTbBztCY/AAAAAAAAAAI/AAAAAAAAAFM/RNwjnkgQ9eo/photo.jpg?sz=128",
"https://www.gravatar.com/avatar/20e068dd2ad8db5e1403ce6d8ac2ef99?s=128&d=identicon&r=PG&f=1"
], function() {
// Do whatever once everything has loaded
box.ctx.drawImage(box.images[0], 0, 0);
});
};
<canvas>
</canvas>
相关文章:
- 如何在不使用jQuery的情况下设置数组以获取单选按钮值
- JavaScript-设置数组中包含变量的数组
- 用户输入设置数组长度
- jQuery/JavaScript按属性设置数组
- 在 JavaScript 中获取和设置数组内对象的值
- 无法设置数组中日期的格式
- 注册客户端脚本不适用于设置数组值
- 根据特定日期设置数组
- IMacros 检查和设置数组元素
- 通过索引设置数组对象的值会设置所有数组项
- 如何使用jQuery/javascript在下拉列表(多选)中设置数组对象的值
- MeanJS:在Angular中设置数组中的Mongoose对象引用
- 如何使用CSS在JavaScript中设置数组中“td”的高度
- 如何从新行设置数组的每个元素
- 根据单独数组中的值设置数组的值[Angular,forEach]
- 使用_.find设置数组内对象的属性值
- 以编程方式在聚合物中设置数组项的属性值
- Wp编辑器设置数组自动保存功能
- 如何设置数组的属性,以便通过json_encode获得所需的结果
- 如何在Javascript中设置数组中的JSON路径