Ich habe versucht, die Array-Werte wie im folgenden Code aufrufen, aber wenn onclicked ich bin in der Lage, das erste Material im Array erfolgreich, aber nicht die anderen, aus irgendeinem Grund es hört auf zu loopen. Bitte lassen Sie mich wissen, wo ich falsch liege.für die Schleife nur den ersten Array-Wert
var White = new THREE.MeshPhongMaterial({
color:0xf6daa5,
// specular: 0x000000,
roughness: 0.7,
shininess: 0,
// bumpMap: mapHeight,
bumpScale: 12,
emissive: null,
emissiveIntensity : null,
reflectivity: 0.1
});
var sink = new THREE.MeshPhongMaterial({
color: 0x224466,
combine: THREE.MixOperation,
reflectivity: 0.8,
side: THREE.DoubleSide,
shininess: 40,
reflectivity:0
opacity:null
})
var gold = new THREE.MeshPhongMaterial({
color: 0x529dc3,
specular: 0x508fbb,
shininess: 60,
emissive:0x070606,
reflectivity:0.7,
opacity:0.8,
shading: THREE.FlatShading,
combine: THREE.MultiplyOperation
}) // have declared these globally
EventsControls.attachEvent('onclick', function() {
var colors = [White, sink, gold];
for (var i = 0; i < colors.length; i++) {
console.log(colors.length);
object.traverse(function(child) {
if (child instanceof THREE.Mesh) {
if (child.material.name == "w__") {
child.material = colors[i];
}
}
})
}
});
Wo sind die Werte im Farbfeld definiert? – Pytth
Sieht aus, als ob Sie die Farbnamen in Anführungszeichen setzen müssen. 'Weiß', 'Senke', 'Gold' (Senke?) Oder irgendwo diese Farbnamenvariablen definieren. – Rick
Array-Indizes beginnen bei 0 und Sie beginnen bei 1. – IMTheNachoMan