Javascript 控制a形框架中的灯光实体
我在a帧中使用了许多实体,但似乎无法正确控制颜色(也称为强度)。我可以访问并设置一次该值,但此后,它将被锁定,不会响应任何修改。有什么明显的解决办法吗 我的应用程序是拥有一组聚光灯,当你在虚拟环境中走过它们时,这些聚光灯的亮度会有起伏 更新: 我从我的A-Frame脚本开始,为它们定义一组聚光灯和一些变量:Javascript 控制a形框架中的灯光实体,javascript,aframe,Javascript,Aframe,我在a帧中使用了许多实体,但似乎无法正确控制颜色(也称为强度)。我可以访问并设置一次该值,但此后,它将被锁定,不会响应任何修改。有什么明显的解决办法吗 我的应用程序是拥有一组聚光灯,当你在虚拟环境中走过它们时,这些聚光灯的亮度会有起伏 更新: 我从我的A-Frame脚本开始,为它们定义一组聚光灯和一些变量: <a-light type="spot" angle="21" color="#BBB" position="33.1 -17 39" target="#Pic01" id="Spot
<a-light type="spot" angle="21" color="#BBB" position="33.1 -17 39" target="#Pic01" id="Spot01"></a-light>
<a-light type="spot" angle="21" color="#BBB" position="38.1 -17 39" target="#Pic02" id="Spot02"></a-light>
<a-light type="spot" angle="21" color="#BBB" position="43.1 -17 39" target="#Pic03" id="Spot03"></a-light>
<a-light type="spot" angle="21" color="#BBB" position="48.1 -17 39" target="#Pic04" id="Spot04"></a-light>
...
<script>
var SpotA=document.querySelector('#Spot01');
var SpotB=document.querySelector('#Spot02');
var SpotC=document.querySelector('#Spot03');
var SpotD=document.querySelector('#Spot04');
...
</script>
Later in the code in a script block, I would use:
<script>
...
SpotA.object3D.children[0].color.r=xxx; (some decimal value)
SpotA.object3D.children[0].color.g=xxx; (some decimal value)
SpotA.object3D.children[0].color.b=xxx; (some decimal value)
...
var SpotA=document.querySelector('#Spot01');
var SpotB=document.querySelector('#Spot02');
var SpotC=document.querySelector('#Spot03');
var SpotD=document.querySelector('#Spot04');
...
稍后在脚本块中的代码中,我将使用:
...
SpotA.object3D.children[0].color.r=xxx;(一些十进制值)
SpotA.object3D.children[0].color.g=xxx;(一些十进制值)
SpotA.object3D.children[0].color.b=xxx;(一些十进制值)
这通常是可行的,但在随机情况下,当光锥变为完全黑色时会发生某种情况,而您可以设置甚至读取值,但无法恢复对光的控制。如果我尝试使用十六进制值(如#3AA)设置颜色,有时随机使用单个rgb组件,就会出现这种情况
如果我从控制台手动查询SpotA,它将返回:
“修改DOM属性。不要直接访问子级(灯光不保证是第一个子级,在访问时未初始化…),例如:
SpotA.setAttribute('color','red')代码>
可以对颜色使用以下任何格式:
rgb(250, 0,0)
rgb(100%,0%,0%)
hsl(0, 100%, 50%)
#ff0000
#f00
red
你能发布一些你试过的代码吗?这样会更容易帮助你。谢谢,我以前尝试过setAttribute,但我一定是做错了什么。它似乎工作正常。很高兴听到这个消息。如能将答案标记为正确,将不胜感激。