2015-10-16 37 views
0

我有一个问题调用一个新的图像对象的onload()函数时立即将该图像设置为对象属性。我的解析器告诉我,imageMap [featureId] .onload不是一个函数。我不明白为什么imageMap [featureId]不是图像本身的同义词? resourceList被用作preloadResource()的参数。我在其他地方有一个setinterval,等待加载的计数等于资源计数。请有任何想法吗?图像onload调用对象属性

var resourceList = ["path.png","path.png","path.png","path.png"]; 
var loadedResource = 0; 


function preloadResource(resArr) 
{ 
      var buildIndex = 1;   

       for (i = 1; i <= resArr.length; i++) 
       { 
        var featureId = "feature" + buildIndex; 
        imageMap[featureId] = new Image(); 
        imageMap[featureId].path = resArr[(i - 1)]; 
        buildIndex++; 
        imageMap[featureId].onload(function() {loadedResource++;}) 
        imageMap[featureId].src = resArr[(i -1)];    
       } 
} 
+0

_“我有一个的setInterval其他地方等待加载计数等于资源计数” _ - 这是一个相当糟糕的实现了。相反,你应该在你的onload回调函数中处理它 - 让它为每个加载的图像增加计数器,然后让它检查计数器是否到达目标,如果是的话触发你想要完成的任何事情。 – CBroe

+0

而这个错误是因为你正在像使用'imageMap [featureId] .onload(...)'这样的函数调用onload函数,这是一个函数调用,它试图执行函数'imageMap [featureId] .onload'。 _Assigning_处理函数通过'.onload = function ...'加载作品...' – CBroe

+0

嗨CBroe,是的,这是问题谢谢。关于onload的INSIDE检查也是正确的。这更快,更可读。 – KolKurtz

回答

2

错误告诉你问题:“onload不是一种方法。”

imageMap[featureId].onload = function() {loadedResource++;}; 

或使用addEventListener