Сенсорный экран не срабатывает в собственном режиме VR

Я должен обнаруживать прикосновения к экрану в режиме VR, потому что это то, что производит кнопка на картоне. (У меня есть другой код для обнаружения кнопок контроллера.)

Этот код:

            // 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);
            }
        });

срабатывает при касании экрана в Android Firefox в нормальном режиме и режиме VR (но режим VR полифилен). В Android Chrome он срабатывает в обычном режиме, но не в режиме VR (который кажется родным).

То же самое происходит, когда я слушаю mousedown или добавляю слушателя в окно для touchstart или mousedown.

Итак, какое событие на каком элементе я должен слушать в собственном режиме VR?


person Doug Reeder    schedule 13.01.2018    source источник


Ответы (2)


Добавьте прослушиватель событий в окно или на холст (AFRAME.scenes[0].canvas).

window.addEventListener('click', function () { // ... } or

window.addEventListener('touchstart', ...)

person ngokevin    schedule 20.01.2018
comment
К сожалению, никакая их комбинация не запускается в режиме VR в Chrome. - person Doug Reeder; 22.01.2018
comment
На developers.google.com/web/fundamentals/vr/vr-perspective в нем говорится, что Daydream View использует прикосновения к экрану для определения положения мобильного устройства в средстве просмотра ... В следующих версиях Chrome biewer Google Cardboard будет представлен как однокнопочный геймпад. Однако непонятно, почему кнопка Cardboard в настоящее время не отображается как кнопка контроллера. - person Doug Reeder; 01.03.2018

В режиме VR в Chrome был виртуальный контроллер. В конечном итоге моим решением было написать компонент, который обнаруживал как касания экрана, так и кнопки контроллера: https://www.npmjs.com/package/aframe-button-controls

person Doug Reeder    schedule 28.06.2020