0

我想改变一类元素的颜色。

例子:

<transform translation='-2 0 0'> 
      <shape  id="N0_0_0"> 
       <appearance> 
         <material class="L2_0_0_3 L2_0_0_2" diffuseColor='1 0 0'></material> 
       </appearance> 
       <box size='0.5,0.5,0.5'></box> 
    </shape> 
    </transform> 
    <transform translation='2 0 0' > 
      <shape id="N2_0_0"> 
       <appearance> 
         <material class="L2_0_0_3 L2_0_0_1" diffuseColor='1 0 0'></material> 
       </appearance> 
       <box size='0.5,0.5,0.5'></box> 
    </shape> 
    </transform> 

当发生特定事件时(在我的例子中是元素的 onMouseOver 事件),我想更改“matT1”类的所有元素的颜色。到目前为止,我尝试更改第一个元素的颜色,但它不起作用。

document.getElementsByClassName("matT1")[0].prop('diffuseColor', '0 0 1');
4

2 回答 2

1

您还可以多次重复使用整个材料。更改diffuseColor 将影响所有的重用。

<material DEF='somename' diffuseColor='1 0 0'></material>

<material USE='somename'></material>
<material USE='somename'></material> 
于 2014-12-05T15:39:12.290 回答
0

我用jquery解决了它。

<script src="http://code.jquery.com/jquery-latest.js"></script>

我刚刚为每个想要更改颜色的元素添加了一个类。

 <transform 
    onmouseover="$('material.L2_0_0_3').attr('diffuseColor', '1 0.25 0.25');"
    onmouseout ="$('material.L2_0_0_3').attr('diffuseColor', '0.5 0.5 0.5');">

onmouseout 使颜色再次恢复正常。$('material.L2_0_0_3')选择所有属于材料的元素(这样做是为了性能)并且是“L2_0_0_3”类的成员。

于 2014-11-15T13:16:42.193 回答