Я бы бросил логику в отдельный a-frame component
.
Имея такую настройку:
<a-cylinder anim-controller>
<a-animation begin="start" end="stop" (...)></a-animation>
</a-cylinder>
При нажатии - переключать логическое значение, и в зависимости отЗначение запуска или остановки анимации:
AFRAME.registerComponent("anim-controller", {
init: function() {
this.running = false
this.animComp = document.querySelector("a-animation")
this.el.addEventListener("click", (e) => {
if (!this.running) {
this.animComp.emit("start") // animation not running - start it
} else {
this.animComp.emit("stop") // animation running - stop it
}
this.running = !this.running // flip the flag
})
}
})
Простой - если анимация запущена - запустите ее.В противном случае остановите его.
Скрипка здесь .