JS语法问题还是使用三个.js三个.循环中的图像加载器

JS syntax issue or using three.js THREE.ImageLoader in a cycle

本文关键字:三个 循环 js 加载 图像 问题 语法 JS      更新时间:2023-09-26

认为它更多的JavaScript语法问题,然后是三个.js但仍然..我有一个对象"o = {}",其纹理

存储如下
o = {
    ...
    textures: {
        one: {  
            low: { t: new THREE.Texture(), url: 'http://i.imgur.com/tJ0uJPt.jpg' },
            normal: { t: new THREE.Texture(), url: 'http://i.imgur.com/wBB1nZN.jpg' }
        },
        two: {  
            low: { t: new THREE.Texture(), url: 'http://i.imgur.com/9JaoZNA.jpg' },
            normal: { t: new THREE.Texture(), url: 'http://i.imgur.com/p9wO18t.jpg' }
            hd: ...
            etc..
        }
        etc..
    }
    ...
}

我需要的是一个可以使用 THREE 加载所有这些纹理的函数。图像加载器。另外,当加载所有纹理时,我想运行o.texturesOnLoad();功能。

这就是我现在 http://jsfiddle.net/NEXny/5/但只有 o.textures 的最后一个纹理在工作。认为我以错误的方式将变量传递给 loader.load( ... );

希望有人能帮助我,谢谢。

我通过将 loader.load(...) 包装在自执行函数中找到了解决方案。

(function(obj, texture) {
    if (current == total) {
        // last texture
        loader.load( texture.url, function (image){
            texture.t.image = image;
            texture.t.needsUpdate = true;
            obj.texturesOnLoad();
        });
    } else {
        loader.load( texture.url, function (image){
            texture.t.image = image;
            texture.t.needsUpdate = true;
        });
    }
})(this, this.textures[texture][quality]);

http://jsfiddle.net/NEXny/6/