我试图在按下按键时将存储在数组中的颜色应用于我的对象,但由于某种原因,按下按键时我只能获取数组的第一个元素。请告诉我是否还有其他方法可以做到这一点。

我尝试了随机颜色功能,但我的要求不包括随机应用颜色。

 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); 

请您参考如下方法:

您的变量“index”位于函数的局部范围内。因此,每次按下 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); 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!