我必须在VR模式下检测屏幕触摸,因为这是Cardboard上的按钮产生的。 (我有其他代码来检测控制器按钮。)
此代码:
// mobile and Cardboard controls
AFRAME.scenes[0].addEventListener('touchstart', function(evt) {
// console.log('scene touchstart:', evt);
if (evt.target.classList.contains('a-enter-vr-button')) {
return;
}
if (!state.isFlying) {
AFRAME.scenes[0].emit('launch', evt);
} else {
AFRAME.scenes[0].emit('hover', evt);
}
});
在正常和VR模式的Android Firefox中点击屏幕时会触发(但VR模式是polyfilled)。在Android Chrome中,它会以正常模式启动,但不会在VR模式下启动(显示为原生模式)。
当我监听mousedown或将监听器添加到窗口时,会出现相同的行为,无论是touchstart还是mousedown。
那么,在原生VR模式下,我应该在哪个元素上听哪个事件?
答案 0 :(得分:0)
将事件侦听器添加到窗口或画布(AFRAME.scenes[0].canvas
)。
window.addEventListener('click', function () { // ... }
或
window.addEventListener('touchstart', ...)
答案 1 :(得分:0)
VR模式具有一个虚拟控制器。我最终的解决方案是编写一个同时检测屏幕轻触和控制器按钮的组件: https://www.npmjs.com/package/aframe-button-controls