我有一个允许您加载新图像的功能。我希望该函数创建一个函数来检测何时加载该图像,并将其存储在数组或对象中。我有另一个将通过数组或对象的函数,并检查每个函数以查看它是否已加载。
我的问题是,如何将每个新函数添加到数组中,并让每个函数返回是否加载了要设置为检查的图像?
**编辑**
我想将名称传递给加载图像的函数,加载'images/'+name+'.png'
,然后将名称作为键的名称传递给数组或对象。
**回复Shawn31313: 这是我所拥有的基本内容:
var resources = {
// I have other stuff to load here
'newImg': function(name) {
if (name) {
var img = new Image();
img.src = 'images/' + name + '.png';
imgLoadingArray[name] = function () {
var loaded = false;
// detect image loading some how
}
}
},
'imgLoadingArray': {},
'loaded': function() {
var loaded = true;
for (each in game.resources.imgLoadingArray) {
if (each == 'false') {
loaded = false;
}
return loaded;
}
}
}
答案 0 :(得分:2)
在我看来,你只需要在图像上设置一个onload监听器来设置数组或对象中的值。如果每个图像都有唯一的名称,那么:
var imageLoaded = {};
...
'newImg': function(name) {
if (name) {
var img = new Image();
img.src = 'images/' + name + '.png';
img.name = name;
imageLoaded[name] = false;
img.onload = function() {imageLoaded[this.name] = true;};
...
}
},
...
未测试。
答案 1 :(得分:1)
您可以创建字典:
var actions = [];
function createAction(name) {
actions[name] = function() {alert('Hi from:'+ name);};
}
createAction('hello world');
actions['hello world']();
答案 2 :(得分:0)
我刚刚意识到......为什么要变量呢?把整个东西扔进一个物体进行装载!
var resources = {
// load some other stuff
'newImg': function(name) {
if (name) {
game.resources.imgLoading[name] = new Image();
game.resources.imgLoading[name].src = 'images/' + name + '.png';
game.resources.imgLoadedCheck[name] = false;
game.resources.imgLoading[name].onload = function() {game.resources.imgLoadedCheck[name] = true;};
}
},
'imgLoading': {},
'imgLoadedCheck': {},
'loaded': function() {
var loaded = true;
for (each in game.resources.imgLoadingArray) {
if (each == 'false') {
loaded = false;
}
return loaded;
}
}
};