我正在尝试构建一个AFrame应用,用户可以点击某个内容并显示新的场景。从那里,用户可以点击其他内容等。该场景的数据来自API,因此很难知道用户可能遇到的所有场景。
考虑到这一点,您将如何在运行时修改AFrame场景?显然修改DOM并不起作用,但如果有办法让AFrame在某个时间重新渲染场景,那就太棒了。如果您认为有另一种方法可以解决这个问题,我很乐意听到它。谢谢!
答案 0 :(得分:6)
只是为了将来参考,因为您已经解决了问题,您可以使用普通的JS DOM API:
var el = document.createElement('a-entity');
document.querySelector('a-scene').appendChild(el);
答案 1 :(得分:4)
您确实可以在运行时修改DOM,它会影响场景。以下是使用从this project获取的jQuery添加新对象的示例:
function appendObject(id, file, scale, position, rotation, scale) {
$('<a-obj-model />', {
id: id,
class: 'city object children',
position: position, // doesn't seem to do anything, known issue
scale: scale,
rotation: rotation,
file: file,
src: '#' + file + '-obj',
mtl: '#' + file + '-mtl',
appendTo : $('#city')
});
document.getElementById(id).setAttribute("position", position); // this does set position as a workaround
}
以下是删除对象的示例:
onMenuDown: function () {
previousObject = document.querySelector("#object" + (objectCount - 1));
previousObject.parentNode.removeChild(previousObject);
objectCount -= 1;
if(objectCount == -1) {objectCount = 0};
},