Изменить компонент в событии enter-vr - PullRequest
0 голосов
/ 07 мая 2019

Я работаю над своим компонентом сетки для A-кадра и хочу, чтобы он "выключился" при входе в режим VR.Где в компоненте я могу прослушать событие enter-vr, чтобы удалить анимацию?

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

  init: function () {
    var thisEl = this.el;
    var data = this.data

    var properties = 'property: material.opacity; from: 0; to: 1; dir: alternate; loop: true'
    properties = properties.concat(properties,'; dur: ', data.durration, '; easing: ', data.easing)

    thisEl.setAttribute('animation', properties)

    document.querySelector('a-scene').addEventListener('enter-vr', remove())

  },

  remove: function () {
    var thisEl = this.el;

    thisEl.setAttribute('animation', '')
   },

Я ожидал, что слушатель в функции init вызовет функцию удаления при срабатывании enter-vr.

1 Ответ

0 голосов
/ 07 мая 2019

Метод неправильно прикреплен. Попробуйте вместо этого:

document.querySelector('a-scene').addEventListener('enter-vr', this.remove.bind(this));

Ваш код вызывает функцию и передает результат в addEventListener, а не ссылку на саму функцию. Я рекомендую прочитать об объявлениях функций, заявлениях и области видимости в JavaScript для лучшего понимания.

Также для удаления компонента используйте removeAttribute:

thisEl.removeAttribute(“animation”);

С помощью setAttribute вы устанавливаете для свойств значения по умолчанию, не удаляя компонент. Дополнительная информация в документах: https://aframe.io/docs/0.9.0/introduction/javascript-events-dom-apis.html#removing-a-component-with-removeattribute

...