首页 > 解决方案 > aframe vive 控制器未捕获类型错误:hand.getAttribute 不是函数

问题描述

我试图在一个项目的框架中获取和更新 vive 控制器的位置。

我已经尝试使用 d3.js

var hand = d3.select('.con_left');
var pos = hand.getAttribute('position');
console.log(pos);

但它显示了错误

Uncaught TypeError: hand.getAttribute is not a function

标签: d3.jsaframehtc-vive

解决方案


最新版本的d3-selection属性方法只是attr

var hand = d3.select('.con_left');
var pos = hand.attr('position');

这是一个例子:

setInterval(() => {
  const box = d3.select('a-box')
  const sphere = d3.select('a-sphere')
  box.attr('position', `${-Math.random()/5} ${Math.random()/5} -3`)
  sphere.attr('position', `${Math.random()} ${1+Math.random()/5} -5`)
}, 50);
<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
<script src="https://d3js.org/d3.v5.min.js"></script>
<a-scene>
  <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
  <a-box position="-1 0.5 -3" rotation="0 45 0" width="1" height="1" depth="1" color="#4CC3D9"></a-box>
  <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
  <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>
  <a-sky color="#ECECEC"></a-sky>
</a-scene>


推荐阅读