我想改变我的threeJS灯的颜色与补间最大时间线,但它似乎不起作用。这是我尝试过的。我做错了什么吗?
var light = new THREE.HemisphereLight( "hsl(0,0%,87%);", 0xFFFFFF, 1); var light2 = new THREE.PointLight( 0x69be94, 1, 15, 2 ); var light3 = new THREE.SpotLight( 0xFFFFE0, 1, 30, Math.PI/14, 1 ); var tl = new TimelineMax(); tl.to(light.color.setHSL, 1, { h : 1, s : 0.4, l : 0.58 }); tl.to(light2.color.setHex, 1, { hex: "#69BE94" }); tl.to(light3.color.setRGB, 1, { r: 105, g:190 ,b:148 }, 1,);
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
请注意, .setHSL, .setHex, & .setRGB 是 all methods 函数。你不能把一个方法作为TweenMax的第一个参数,它必须是一个属性。你需要这样做:
.setHSL, .setHex, & .setRGB
tl.to(light3.color, 1, {r: 0.3, g:0.7, b:0.5}, 1,); ,以便时间线可以访问它。
tl.to(light3.color, 1, {r: 0.3, g:0.7, b:0.5}, 1,);
此外,请记住,颜色 .rgb 重视 are in the [0, 1] range ,而不是 [0, 255] 。如果需要补间到特定的HSL值,只需使用临时颜色变量:
.rgb
[0, 1]
[0, 255]
// Create temp variable to extract RGB values