Подключение к событиям и состоянию компонента aframe-alongpath-component

В документации для aframe-alongpath-component есть раздел о событиях. и по гос.

Одно из состояний - "moveonpath" - Сущность, которая в данный момент движется по пути.

Как мне подключиться к нему, чтобы во время движения сущность воспроизводила определенный звук?

Я также не понимаю из документации, как я могу запустить движение по пути, чтобы начать код из другого места. Кажется, есть событие, которое вы можете прослушать "movingstarted", но нет метода воспроизведения, который я могу вызвать для компонента.

Конечная цель, которую я пытаюсь достичь, - это камень, брошенный из катапульты.

Когда анимация катапульты завершится, я хочу запустить триггер, чтобы качнуть следование по пути для его траектории и вызвать звук во время движения и другой звук, когда он достигнет конца пути (который будет в океане).


person Adam Marc Williams    schedule 18.02.2018    source источник


Ответы (1)


проверить состояние довольно просто:

element.is("state");

получить событие «завершено» еще проще:

element.addEventListener("movingended", (e)=>{})


теперь добавьте прослушиватель событий в функцию init и проверьте состояние в функции отметки в компоненте:

AFRAME.registerComponent('foo', {
  init: function() {
    this.el.addEventListener("movingended", (e) => {
      console.log("moving ended")
    })
  },
  tick: function() {
    console.log(this.el.is("moveonpath"));
  }
})

и прикрепляем компонент:

<a-box foo></a-box>

проверьте это в прямом эфире здесь.

person Piotr Adam Milewski    schedule 18.02.2018
comment
Спасибо. Мне удалось отследить прослушиватель событий с движущимся концом до того, как вы ответили, но я понятия не имел, что объекты A-Frame имеют локальное состояние, к которому можно получить доступ через el.is (state). Я также обнаружил, просмотрев код компонентов, что у него есть метод воспроизведения, к которому я могу получить доступ через element.components.alongpath.play (). Единственная проблема, с которой я сейчас столкнулся, заключается в том, что он автоматически воспроизводится при загрузке, а не ждет, пока будет воспроизведен, но я может форкнуть компонент и добавить состояние isPaused, которое также прослушивает тик, поэтому он не перемещается, пока я не установлю для него значение false. - person Adam Marc Williams; 18.02.2018