Javascript 控制a形框架中的灯光实体

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帧中使用了许多实体,但似乎无法正确控制颜色(也称为强度)。我可以访问并设置一次该值,但此后,它将被锁定,不会响应任何修改。有什么明显的解决办法吗

我的应用程序是拥有一组聚光灯,当你在虚拟环境中走过它们时,这些聚光灯的亮度会有起伏

更新: 我从我的A-Frame脚本开始,为它们定义一组聚光灯和一些变量:

<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,它将返回:

。。。这正好显示了我所期望的——所有元素都存在并且可以从控制台访问。但是请注意,不能使用javascript语句设置颜色属性。及-

SpotA.object3D.children[0].color.r=(一些值)

…什么也做不了,光锥仍然是黑色的。无论是用代码还是手工完成,结果都是一致的。令人沮丧

现在,如果我查询任何组件的值,它将返回我正确设置的值,但是灯光将被锁定,只生成一个黑色圆锥体。最终,它将只返回“未定义”

SpotA.object3D.children[0].color.r=0.73333;(输入)

修改DOM属性。不要直接访问子级(灯光不保证是第一个子级,在访问时未初始化…),例如:

SpotA.setAttribute('color','red')

可以对颜色使用以下任何格式:

rgb(250, 0,0)
rgb(100%,0%,0%)
hsl(0, 100%, 50%)
#ff0000
#f00
red

你能发布一些你试过的代码吗?这样会更容易帮助你。谢谢,我以前尝试过setAttribute,但我一定是做错了什么。它似乎工作正常。很高兴听到这个消息。如能将答案标记为正确,将不胜感激。