如何将十六进制的十六进制颜色变为three.js lambertmaterial函数

时间:2013-11-15 13:18:55

标签: three.js typescript

我的项目中有一个小问题,获得十六进制颜色。我有简单的颜色变量:

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

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

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

问题在于获得原子颜色(在参数clr下面),它是整数形式并且函数在three.js THREE.MeshLambertMaterial({color:clr})具有未定义的参数。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您应该能够调整对象以保存十六进制字符串 - 这可以保证您返回'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),
}