多属性组件的setAttribute不适用于vec3

时间:2018-08-08 12:42:48

标签: three.js aframe setattribute

我试图通过以下代码将多属性组件添加到实体-

在一帧场景内-

<a-entity id="hornets"></a-entity>

在控制器内-

var hornets = document.querySelector('#hornets');      
hornets.setAttribute('crtmodelcopy', {id: 'ball', jitter: 5 1.2 0.4, modelCenter: 2 0.5 -50, src:'#hornet'});

该组件的代码如下-

AFRAME.registerComponent('crtmodelcopy', {
  schema: {
          id: {type:'string'},
          jitter: {type:'vec3'},
          modelCenter: {type:'vec3'},
          src: {type:'string'}
          },
  init: function() {
          ......
   }

但是,我在控制台中收到以下错误-

Uncaught SyntaxError: Unexpected number

我无法理解我在这里做错了什么。我尝试了其他组合,但无济于事。在某些情况下,该组件没有任何属性即可被附加。我认为问题是由于抖动和modelCenter属性属于vec3字段,因此我还需要以相同的格式传递数据。

有人可以帮忙吗?

谢谢, 尼拉吉

1 个答案:

答案 0 :(得分:0)

实际上,您没有传递vec3,只是传递了三个数字(这是一个意外值),因为解析器需要一个向量。


通过vec3

setAttribute("test", {"jitter": new THREE.Vector3( 0, 1, 0 )})

或向量的字符串版本:

setAttribute("test", {"jitter": "0 1 0"})

检出here。控制台显示两个向量都正确传递到update函数中。