Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mobile 3.js don';我不接电话_Mobile_Three.js_Touch - Fatal编程技术网

Mobile 3.js don';我不接电话

Mobile 3.js don';我不接电话,mobile,three.js,touch,Mobile,Three.js,Touch,我在Three.js场景上面有一些菜单项,可以很好地使用鼠标,但是在手机上它们不会收到任何触摸/点击 html元素位于页面中,即如下所示 <div id='Three.js container' ></div> <div id='menu' ></div> 这是三个触摸处理器 function onDocumentTouchStart(event) { if (event.touches.length == 1) {

我在Three.js场景上面有一些菜单项,可以很好地使用鼠标,但是在手机上它们不会收到任何触摸/点击

html元素位于页面中,即如下所示

    <div id='Three.js container' ></div>
    <div id='menu' ></div>
这是三个触摸处理器

function onDocumentTouchStart(event) {



    if (event.touches.length == 1) {

        event.preventDefault();

        onPointerDownPointerX = event.touches[0].pageX;
        onPointerDownPointerY = event.touches[0].pageY;

        onPointerDownLon = lon;
        onPointerDownLat = lat;

        mouse.x = ( event.touches[0].pageX/ window.innerWidth ) * 0.1;
        mouse.y = ( event.touches[0].pageY / window.innerHeight ) * 0.1;

        detectHotspotClick();

    }

    if (event.touches.length == 2) {

        _state = STATE.TOUCH_ZOOM_PAN;
        var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;
        var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;
        _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt( dx * dx + dy * dy ``);

    }

}
然后鼠标点击

    function onDocumentMouseDown(event) {

    event.preventDefault();

    isUserInteracting = true;

    if(selectedHotspot && !viewingHotspot){
        TWEEN.removeAll(); 
        selectedHotspot = null;
    }

    onPointerDownPointerX = event.clientX;
    onPointerDownPointerY = event.clientY;

    onPointerDownLon = lon;
    onPointerDownLat = lat;

    // update the mouse variable
    mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
    mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;

    detectHotspotClick();

}

有人知道我如何确保菜单接收触摸事件吗

将事件侦听器添加到容器div,而不是文档

 document.getElementById("container").addEventListener('touchstart', onDocumentTouchStart, false);
 document.getElementById("container").addEventListener('touchstart', onDocumentTouchStart, false);