Коснитесь событий и пересечений с помощью crosswalk / three.js на устройстве Android 4.0.4

#android #three.js #touch #webgl #crosswalk-runtime

#Android #three.js #коснитесь #webgl #crosswalk-среда выполнения

Вопрос:

У меня есть приложение на основе crosswalk WebGL_Sample, которое корректно работает на всех эмуляторах XDK (я не использую XDK, просто тестирую EMU), когда я пытаюсь коснуться / пересечь куб с Three.js это «raycaster.intersectObjects».

Проблема в том, что если я снимаю это на реальном LGP920, работающем под управлением ICS, события скольжения при касании работают (как для кубика скольжения в примере), но нажатия при касании — нет, тогда как, опять же, на EMU все работает нормально…

Есть какие-нибудь подсказки о том, что происходит?

вот что я использую (массив «объекты» содержит только один элемент куба):

     var vector = new THREE.Vector3( ( e.clientX / window.innerWidth ) * 2 - 1, - ( e.clientY / window.innerHeight ) * 2   1, 0.999 );
    projector.unprojectVector( vector, camera );

    var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );

    var intersects = raycaster.intersectObjects( objects );

    if ( intersects.length > 0 ) {

        intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff );

    }
  

Спасибо!

Ответ №1:

Ок, понял, в эмуляторах XDK приложение реагировало при наведении указателя мыши на поверхность целевого куба, но не при наведении пальца на устройство.

Я должен был использовать с e.touches[0].pageX и e.touches[0].pageY (вместо e.clientX и e.clientY) для устройства.