我想改变我的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,);发布于 2020-02-27 13:14:21
请注意,.setHSL, .setHex, & .setRGB是all methods函数。你不能把一个方法作为TweenMax的第一个参数,它必须是一个属性。你需要这样做:
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值,只需使用临时颜色变量:
// Create temp variable to extract RGB values
var tempColor = new THREE.Color().setHSL(1, 0.4, 0.58);
tl.to(light.color, 1, { r: tempColor.r, g: tempColor.g, b: tempColor.b });
// Extract RGB values from tempColor again
tempColor.setHex(0x69BE94);
tl.to(light2.color, 1, { r: tempColor.r, g: tempColor.g, b: tempColor.b });https://stackoverflow.com/questions/60425284
复制相似问题