2016-12-26 108 views
3

我正嘗試構建一個AFrame應用程序,用戶可以在其中點擊某個內容並顯示一個新場景。從那裏,用戶可以點擊其他的東西等等。這個場景的數據是從API獲取的,所以很難知道用戶可能遇到的所有可能的場景。在AFrame中實時添加新實體

記住這一點,您將如何在運行時修改AFrame場景?顯然修改DOM不起作用,但是如果有辦法讓AFrame在特定時間重新渲染場景,那就太棒了。如果你認爲有另一種方法來解決這個問題,我很樂意聽到它。謝謝!

回答

3

您確實可以在運行時修改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}; 
    }, 
+0

嗯...對我來說,當我更新DOM,我得到[此錯誤](http://imgur.com/a/I8pfi)爲每我嘗試添加對象。你知道什麼可能導致這個「 – hyperdo

+0

其實,沒關係 - 我在追加標籤後追加它現在有效!感謝您的幫助;將標記爲已接受。 – hyperdo

4

只是爲了將來參考,因爲你已經解決您的問題,你可以使用正常的JS DOM API:

var el = document.createElement('a-entity'); 
document.querySelector('a-scene').appendChild(el);