私は x3d で実装されたかわいい太陽系を持っています。私が数時間やろうとしてきたことは、マウスを使ってワンクリックで惑星の回転を止めることです。
<TimeSensor DEF='clockSol' id='clockSol' cycleInterval='80' loop='true' enabled='true' />
...
<OrientationInterpolator DEF='interRotacion' key='0 0.25 0.5 0.75 1' keyValue='0 1 0 0 0 1 0 1.57079 0 1 0 3.14159 0 1 0 4.71239 0 1 0 6.28317'/>
...
<ROUTE fromNode='clockSol' fromField='fraction_changed' toNode='interRotacion' toField='set_fraction'></ROUTE>
<ROUTE fromNode='interRotacion' fromField='value_changed' toNode='RotacionSol' toField='set_rotation'></ROUTE>
*............*
それが太陽アニメーションの実装です。
クリックイベントは次のとおりです。
document.getElementById('Sol').addEventListener('click',
function() {
if(document.getElementById('clockSol').getAttribute('enabled') == 'true' )
document.getElementById('clockSol').setAttribute('enabled', 'false');
else
document.getElementById('clockSol').setAttribute('enabled', 'true');
}, false);
これにより、ノードが無効になるため、アニメーションが効果的に停止しますが、アニメーションを再開すると、サイクルが内部的に停止していないように見えます。効果は、もう一度クリックしてアニメーションを再開すると、オブジェクトがスムーズに回転を再開するのではなく、新しい位置に点滅することです。
それを行う方法はありますか?