【发布时间】:2016-06-03 01:40:34
【问题描述】:
我尝试像下面的代码一样调用数组值,但是当点击时,我能够成功获取数组中的第一个材料,但不能成功获取其他材料,由于某种原因它停止循环。请让我知道我哪里出错了。
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];
}
}
})
}
});
【问题讨论】:
-
colors数组中的值在哪里定义?
-
看起来您需要在颜色名称周围加上引号。 'White', 'sink', 'gold' (sink?) 或在某处定义这些颜色名称变量。
-
数组索引从 0 开始,你从 1 开始。
-
也尝试过使用单引号,但没有成功,我已经在全局范围内定义了这些变量 White、sink 和 gold。
-
IMTheNachoMan:我可以在点击时访问第一个数组对象“White”,尝试使用 0(即 i=0),并尝试使用 i=1 检查颜色“sink”。这也工作正常。问题是它没有循环。
标签: javascript arrays three.js