2017-02-27 9 views
0

私のレイキャスティングはマウスでは問題ありませんが、タッチでは問題があります。このようThree.js Raycasterはマウスで動作しません。

$(document).bind('mousedown', onDocumentMouseDown); 
    $(document).bind('mousewheel', onDocumentMouseWheel); 
    $(document).bind('touchstart', onDocumentTouchStart); 
    $(document).bind('touchmove', onDocumentTouchMove); 

私のマウスイベント

function onDocumentMouseDown(e) { 

    e.preventDefault(); 
    detectHotspotClick(e.pageX,e.pageY); 

} 

マイタッチイベント

function onDocumentTouchStart(e) { 

    e.preventDefault(); 

    var event = e.originalEvent; 

    if (event.touches.length == 1) { 
     var t=event.touches[0]; 
     draggingY = t.pageY; 
     detectHotspotClick(t.pageX,t.pageY); 
    } 

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

     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 detectHotspotClick(x,y){ 

    console.log('detectHotspotClick('+ x + "," + y+ ")"); 

    var raycaster = new THREE.Raycaster(); 
    var mouse = new THREE.Vector2(); 

    mouse.x = (x/renderer.domElement.width) * 2 - 1; 
    mouse.y = - (y/renderer.domElement.height) * 2 + 1; 

    raycaster.setFromCamera(mouse, camera); 

    var intersects = raycaster.intersectObjects(targetList, true); 

    if (intersects.length > 0) 
     hotspotClick(intersects[ 0 ].object); 
} 
として

Iセットアップイベント

これはマウスで正常に動作しますが、私はTouchで気付きました。mouse.xの値は常に否定的であると思われます。

私はこれを検討するべき他の方法はありますか?

答えて

0

理由はわかりませんが、toucheventのdetectHotspotClick(t.pageX * 2、t.pageY * 2)ではマウスイベントに異なる数字を報告する必要があります。

関連する問題