如何在单击时更改使用JSONLoader创建的对象的颜色

时间:2015-11-26 15:19:31

标签: javascript three.js

我最近开始使用Three.js并使用JSONLoader创建了一个对象。整个对象包含一种灰色的材料。

现在我只想通过点击我添加到HTML中的按钮来更改对象的颜色。

<input type="button" value="Change Color" onClick="group.material.color.setHex('0xffffff')">

DevTools提供以下消息:

无法读取属性&#39;颜色&#39;未定义的

好吧,我检查了对象是否包含属性颜色,当然它没有。

我知道它不会起作用,但希望最终会消失。以下是创建对象的部分:

group = new THREE.Object3D();

    //load mesh 
    var loader = new THREE.JSONLoader();
    loader.load('models/s_class.js',  function( geometry ) {
        mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial( {color: 0x2f3a4c}) );
        mesh.scale.set( 10, 10, 10 );
        mesh.rotation.x = -Math.PI / 2;
        mesh.position.y = 0;
        group.add( mesh );
        scene.add( group );
    } );

请问,有没有办法只需按一下按钮就可以改变颜色?我是否必须使用另一台Loader构建我的对象?

Here is my code on jsfiddle

提前致谢!!!

1 个答案:

答案 0 :(得分:0)

不要设置“组”的颜色,而是设置孩子的颜色。例如。使用遍历函数。

clear:both;