Это работает, если вы добавляете прослушиватель событий в поле каждый раз, когда создаете его:
document.getElementById("myboxes").innerHTML = (....)
document.getElementById("mybox").addEventListener('componentchanged', listenerfnc)
как и я здесь .
Но, по-моему, вы должны подходить к этому по-другому.
1) Если вам нужно изменить положение, измените положение вместо того, чтобы перезаписывать все innerHTML
:
var newPosition = new THREE.Vector3( randomX, randomY, randomZ );
mybox.setAttribute("position", newPosition)
и перезапустите анимацию:
а) установить начало события для запуска анимации:
<a-animation begin="start">
б) испустить его
animationReference.emit("start")
c) (необязательно) Проверьте компонент анимации Ngo Kevins
Он должен скоро заменить <a-animation>
, поэтому я бы рекомендовал привыкнуть к нему.
2) Создайте элемент HTML, используя document.createElement("a-box)
вместо внесения изменений в innerHTML
var box = document.createElement("a-box")
box.setAttribute("position", newPos)
box.addEventListener("event", callback)
sceneReference.appendChild(box)