如何获得十六进制到三的十六进制颜色.js朗伯材料函数



我在获得十六进制颜色的项目中遇到了小问题。我有简单的颜色变量:

var colors = {
    "C":0x000000,
    "H":0xffffff,
    "O":0xff0000,
    ...
}

我想在下面的函数中按键获取我的颜色:(它是用打字稿写的)

getAtomColor(element: string) :number{
    for (var key in colors) {
        if (element == key) {
            return colors[key];
        }
    }
}

问题是得到原子颜色(在参数 clr 下面),它是整数形式和函数在三.js三。MeshLambertMaterial({color:clr}) 具有未定义的参数。如何解决此问题?

您应该能够调整对象以保存十六进制字符串 - 这将保证您返回"0x000000"而不是0

var colors = {
    'C': '0x000000',
    'H': '0xffffff',
    'O': '0xff0000',
}

否则,您可以将它们存储为THREE.color对象...

var colors = {
    'C': new THREE.Color(0x000000),
    'H': new THREE.Color(0xffffff),
    'O': new THREE.Color(0xff0000),
}

最新更新