Transition.start = function(){
for(var j = 0; j < 6; j++)
{
console.log("FOR LOOP");
(function(){
console.log("INNER Function");
var image = new Image();
image.src = path + Config.imgName[j] + ".jpg";
image.onload = function () {
console.log("GONE");
clearImages[source].push(image);
console.log(image);
};
})();
}
}
在此控制台上“FOR LOOP”和“INNER Function”打印6次,但“GONE”打印12次。我无法弄清楚原因。我想要运行onload的主体6次。
和Transition.start
从onDocumentKeyDown
监听器调用,如此
function onDocumentKeyDown( event )
{
if (keyPressed == 38) //up arrow
Transition.start();
}
答案 0 :(得分:7)
我得到了问题的根源。实际上每次在浏览器中呈现图像时都会调用image.onload
。实际上,我一旦加载了图像,我就将它存储在clearImages
中,这样如果以后图像是必需的,那么可以直接从该数组中获取,所以如果将来需要图像,那么它将从{ {1}}数组,但同样会调用onload函数。
所以我在clearImages
函数本身内image.onload = null
解决了这个的事情