我在使用webgl应用。我有starsList
数组,出于某种原因,当我运行此函数时:
function initTextures() {
for (i = 0; i < starsList.length; i++) {
starsList[i].texture = gl.createTexture();
starsList[i].texture.image = new Image();
starsList[i].texture.image.onload = function () {
handleLoadedTexture(starsList[i].texture)
}
starsList[i].texture.image.src = starsList[i].name + ".gif";
}
}
我收到了这个错误:
TypeError: starsList[i] is undefined
handleLoadedTexture(starsList[i].texture)
尽管在循环的第一行定义了starsList[i].texture
任何想法为什么?
答案 0 :(得分:0)
当您调用onload回调时,i
等于starsList.length
。
所以starsList[starsList.length]
未定义。
宣布回调时
starsList[i].texture.image.onload = function () {
handleLoadedTexture(starsList[i].texture)
}
它不会复制starsList
的某些特定值。它只会在调用时尝试查找范围内的所有变量。
对于解决方案,您可以绑定每个onload回调以使用特定的i