2015-10-16 95 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