代码之家  ›  专栏  ›  技术社区  ›  Niraj

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

  •  0
  • Niraj  · 技术社区  · 6 年前

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

    在A帧场景中-

    <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
    

    我无法理解我在这里做错了什么。我试过其他组合,但没有用。在某些情况下,组件不带任何属性就被附加。我认为问题是由于抖动和模型中心属性是vec3字段,所以我需要以相同的格式传递数据。

    有人能帮忙吗?

    谢谢, 尼拉杰

    1 回复  |  直到 6 年前
        1
  •  0
  •   Piotr Adam Milewski    6 年前

    实际上你不会通过 vec3 ,只有三个数字,这是一个意外的值,因为解析器需要一个向量。


    要么通过 VEC3 :

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

    或矢量的字符串版本:

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

    过来看 here . 控制台显示两个向量都正确地传递到 update 功能。