我正在尝试在按下按键时将存储在数组中的颜色应用于我的对象,但由于某种原因,我只能在按下时获取数组的第一个元素。如果还有其他办法,请告诉我。
我尝试了随机颜色功能,但我的要求不包括随机应用颜色。
var onKeyDown = function(event) {
if (event.keyCode == 67) { // when 'c' is pressed
var index=0;
object.traverse( function( child ) { if ( child instanceof THREE.Mesh ) {
if (child.material.name == "Leather") {
var colors = [0xff0000, 0x00ff00, 0x0000ff]; // red, green and blue
if(index == colors.length) index = 0;
child.material.color.setHex(colors[index++]);
child.material.needsUpdate=true;
child.geometry.buffersNeedUpdate = true;
child.geometry.uvsNeedUpdate = true;
}
}});
} };
document.addEventListener('keydown', onKeyDown, true);
答案 0 :(得分:1)
您的变量'索引'位于函数的本地范围内。所以当你按下C键时,它会被初始化(var index = 0;)。
你只需要将这个变量移到函数之外,一切都会好的。
var index=0,
onKeyDown = function(event) {
if (event.keyCode == 67) { // when 'c' is pressed
object.traverse( function(child) {
if (child instanceof THREE.Mesh) {
if (child.material.name == "Leather") {
var colors = [0xff0000, 0x00ff00, 0x0000ff]; // red, green and blue
if(index == colors.length) index = 0;
child.material.color.setHex(colors[index++]);
child.material.needsUpdate=true;
child.geometry.buffersNeedUpdate = true;
child.geometry.uvsNeedUpdate = true;
}
}
});
}
};
document.addEventListener('keydown', onKeyDown, true);