2016-08-25 13 views
0

3つのjを使用してcolor onclickイベントを追加するにはどうすればよいですか?誰も助けることができますか?あなたのonclickハンドラでメッシュの材料のcolorプロパティに新しい色を割り当てる必要がクリックイベントに色を動的に追加する方法は?

 var pts = [], numPts = 5; 
    for (var i = 0; i < numPts * 2; i ++) { 
     var l = i % 2 == 1 ? 10 : 20; 
     var a = i/numPts * Math.PI; 
     pts.push(new THREE.Vector2 (Math.cos(a) * l, Math.sin(a) * l)); 
    } 

    var shape = new THREE.Shape(pts); 
    var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings); 
    var material2 = new THREE.MeshLambertMaterial({ color: 0x66CC00, wireframe: false }); 
    var mesh = new THREE.Mesh(geometry, material2); 
    scene.add(mesh); 

答えて

-1

:私は以下のコードを持っています。

は、このような関数でそれを開始するグローバル空間における変数meshを宣言 -

mesh.material.color = new THREE.Color(0xff0000); 
mesh.material.needsUpdate = true; 

アップデート - 例えば、それはちょうどあなたのonclickハンドラに次の行を追加します赤作ります

var mesh; function init() { var pts = [], numPts = 5; for (var i = 0; i < numPts * 2; i ++) { var l = i % 2 == 1 ? 10 : 20; var a = i/numPts * Math.PI; pts.push(new THREE.Vector2 (Math.cos(a) * l, Math.sin(a) * l)); } var shape = new THREE.Shape(pts); var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings); var material2 = new THREE.MeshLambertMaterial({ color: 0x66CC00, wireframe: false }); mesh = new THREE.Mesh(geometry, material2); scene.add(mesh); } 
+0

私はこれも試しましたが、以下のエラーが発生しました:ReferenceError:メッシュが定義されていません –

+0

あなたは色の変更のための他の例を動的に持っています。もしあなたがそれを共有してください。 –

+0

関数内で 'mesh'変数を宣言している可能性があります。関数の外のグローバル空間に変数( 'mesh')を宣言する必要があります。それで、あなたはその機能でそれを開始することができます。 –

関連する問題