三个JS对象加载,为对象添加颜色

时间:2016-10-26 10:16:13

标签: javascript json

我正试图用三个js将颜色加到一个物体上。 尝试了很多不同的东西,但它没有用。

var objectLoader = new THREE.ObjectLoader();
objectLoader.load("hoesje/hoesje.json", function ( object ) {
    scene.add( object );
});

我希望有人可以帮助我,谢谢。

var loader = new THREE.OBJLoader();
loader.addEventListener( 'load', function ( event ) {
    var object = event.content;
    object.traverse( function ( child ) {
        if ( child instanceof THREE.Mesh )
            child.material.color.setRGB (1, 0, 0);
    });
    scene.add( object );
});
loader.load( 'hoes.obj' );

但后来我收到此错误:TypeError:loader.addEventListener不是函数

var loader = new THREE.OBJLoader();
loader.load( 'load', function ( event ) {
    var object = event.content;
    object.traverse( function ( child ) {
        if ( child instanceof THREE.Mesh )
            child.material.color.setRGB (1, 0, 0);
    });
    scene.add( object );
});
loader.load( 'hoes.obj' );

我确实将.addEventListener更改为.load但它给了我跟随错误 NS_ERROR_DOM_BAD_URI:访问受限制的URI被拒绝

    var objectLoader = new THREE.ObjectLoader();
objectLoader.load("hoesje/hoesje.json", function ( object ) {
scene.add( object );
} );

上面的代码是我在ThreeJS中加载模型的工作代码,在这段代码中我想实现一个函数来改变颜色......有什么想法?

1 个答案:

答案 0 :(得分:0)

我不知道threejs但看着你的代码,问题似乎是添加事件监听器。为什么不使用OBJLoader所拥有的methods

var loader = new THREE.OBJLoader();
loader.load('hoes.obj', function(object) {
    object.traverse( function ( child ) {
        if ( child instanceof THREE.Mesh )
            child.material.color.setRGB (1, 0, 0);
    });
    scene.add( object );
})

修改 响应OP的编辑。 .load()方法:
.load ( url, onLoad, onProgress, onError )

  

url - required
  onLoad - 加载完成时将调用。该   参数将是加载的Object3D   onProgress - 将被召唤   当负载进展时。参数将是XmlHttpRequest   实例,包含.total和.loaded字节   onError - 会的   加载错误时调用。

鉴于以下代码 loader.load( 'load', function ( event )

load似乎不是url function(event) - 它不是一个事件 - 它是加载的Object3D 这就是为什么在上面的答案中,不是创建eventListener然后尝试触发它,而是使用load()调用.obj resource方法。