我正在为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函数。
答案 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