位置和旋转属性未在 aframe 0.8.0 中使用 SetAttribute 更新
The position and rotation attributes are not updating with SetAttribute in aframe 0.8.0
我的组件旨在在检查时创建一个新实体,它确实这样做了,它添加了大部分属性,但没有添加旋转和位置。我看到这似乎是 0.5.0 之前的版本的问题,但我使用的是 0.8.0,它仍然没有更新。有什么想法吗?
AFRAME.registerComponent('new-room', {
schema: {
on: {type: 'string'},
rotation: {type: 'string'},
target: {type: 'selector'},
iconposition: {type: 'string'},
iconrotation: {type: 'string'}
},
init: function () {
// Do something when component first attached.
var data = this.data;
var el = this.el;
el.addEventListener(data.on, function () {
// Set image.
data.target.setAttribute('rotation', data.rotation);
// Remove all room icons
var entityEl = document.querySelector('.icons');
entityEl.parentNode.removeChild(entityEl);
// Adjust room icons
var entityEl = document.createElement('a-entity');
document.querySelector('a-scene').appendChild(entityEl);
entityEl.setAttribute('geometry', {primitive: 'plane', height: '1', width: '1'});
entityEl.setAttribute('material', {shader: 'flat', src: '#thumb', transparent: 'true', opacity: '.3'});
entityEl.setAttribute('class','icons');
entityEl.setAttribute('position',data.iconposition);
document.querySelector('a-scene').flushToDOM(true);
});
}
});
在哪里设置data.rotation
?因为您传入的是同一个对象,所以它不会将其识别为更新。我们规定在文档中使用 object3D.rotation
更新旋转,例如 el.object3D.rotation.set(x, y, z)
或 el.object3D.rotation.copy(vec3)
.
我的组件旨在在检查时创建一个新实体,它确实这样做了,它添加了大部分属性,但没有添加旋转和位置。我看到这似乎是 0.5.0 之前的版本的问题,但我使用的是 0.8.0,它仍然没有更新。有什么想法吗?
AFRAME.registerComponent('new-room', {
schema: {
on: {type: 'string'},
rotation: {type: 'string'},
target: {type: 'selector'},
iconposition: {type: 'string'},
iconrotation: {type: 'string'}
},
init: function () {
// Do something when component first attached.
var data = this.data;
var el = this.el;
el.addEventListener(data.on, function () {
// Set image.
data.target.setAttribute('rotation', data.rotation);
// Remove all room icons
var entityEl = document.querySelector('.icons');
entityEl.parentNode.removeChild(entityEl);
// Adjust room icons
var entityEl = document.createElement('a-entity');
document.querySelector('a-scene').appendChild(entityEl);
entityEl.setAttribute('geometry', {primitive: 'plane', height: '1', width: '1'});
entityEl.setAttribute('material', {shader: 'flat', src: '#thumb', transparent: 'true', opacity: '.3'});
entityEl.setAttribute('class','icons');
entityEl.setAttribute('position',data.iconposition);
document.querySelector('a-scene').flushToDOM(true);
});
}
});
在哪里设置data.rotation
?因为您传入的是同一个对象,所以它不会将其识别为更新。我们规定在文档中使用 object3D.rotation
更新旋转,例如 el.object3D.rotation.set(x, y, z)
或 el.object3D.rotation.copy(vec3)
.