在enter-vr事件中更改组件

时间:2019-05-07 04:44:04

标签: aframe

我正在为A-Frame开发scrim component,并希望它在进入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', '')
   },

我希望在enter-vr触发时,init函数中的侦听器可以调用remove函数。

1 个答案:

答案 0 :(得分:0)

该方法未正确附加。尝试以下方法:

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