#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) для устройства.