多属性组件的 setAttribute 不适用于 vec3
setAttribute for multi attribute component not working for vec3
我正在尝试通过以下代码向实体添加多属性组件 -
在一帧场景内 -
<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
我无法理解我在这里做错了什么。我尝试过其他组合,但无济于事。在某些情况下,组件在没有任何属性的情况下被附加。我认为问题是由于 jitter 和 modelCenter 属性是 vec3 字段,所以我也需要以相同的格式传递数据。
有人可以帮忙吗?
谢谢,
尼拉吉
实际上您没有传递 vec3
,只是传递了三个意外值的数字,因为解析器需要一个向量。
要么传一个vec3
:
setAttribute("test", {"jitter": new THREE.Vector3( 0, 1, 0 )})
或向量的字符串版本:
setAttribute("test", {"jitter": "0 1 0"})
检查一下 here。控制台显示两个向量都已正确传递到 update
函数中。
我正在尝试通过以下代码向实体添加多属性组件 -
在一帧场景内 -
<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
我无法理解我在这里做错了什么。我尝试过其他组合,但无济于事。在某些情况下,组件在没有任何属性的情况下被附加。我认为问题是由于 jitter 和 modelCenter 属性是 vec3 字段,所以我也需要以相同的格式传递数据。
有人可以帮忙吗?
谢谢, 尼拉吉
实际上您没有传递 vec3
,只是传递了三个意外值的数字,因为解析器需要一个向量。
要么传一个vec3
:
setAttribute("test", {"jitter": new THREE.Vector3( 0, 1, 0 )})
或向量的字符串版本:
setAttribute("test", {"jitter": "0 1 0"})
检查一下 here。控制台显示两个向量都已正确传递到 update
函数中。