我正嘗試構建一個AFrame應用程序,用戶可以在其中點擊某個內容並顯示一個新場景。從那裏,用戶可以點擊其他的東西等等。這個場景的數據是從API獲取的,所以很難知道用戶可能遇到的所有可能的場景。在AFrame中實時添加新實體
記住這一點,您將如何在運行時修改AFrame場景?顯然修改DOM不起作用,但是如果有辦法讓AFrame在特定時間重新渲染場景,那就太棒了。如果你認爲有另一種方法來解決這個問題,我很樂意聽到它。謝謝!
我正嘗試構建一個AFrame應用程序,用戶可以在其中點擊某個內容並顯示一個新場景。從那裏,用戶可以點擊其他的東西等等。這個場景的數據是從API獲取的,所以很難知道用戶可能遇到的所有可能的場景。在AFrame中實時添加新實體
記住這一點,您將如何在運行時修改AFrame場景?顯然修改DOM不起作用,但是如果有辦法讓AFrame在特定時間重新渲染場景,那就太棒了。如果你認爲有另一種方法來解決這個問題,我很樂意聽到它。謝謝!
您確實可以在運行時修改DOM,它會影響場景。以下是添加使用jQuery從this project邁出了新的對象的示例:
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};
},
只是爲了將來參考,因爲你已經解決您的問題,你可以使用正常的JS DOM API:
var el = document.createElement('a-entity');
document.querySelector('a-scene').appendChild(el);
嗯...對我來說,當我更新DOM,我得到[此錯誤](http://imgur.com/a/I8pfi)爲每我嘗試添加對象。你知道什麼可能導致這個「 – hyperdo
其實,沒關係 - 我在追加標籤後追加它現在有效!感謝您的幫助;將標記爲已接受。 – hyperdo