2011-11-29 16 views
2

我有建设项目与three.js ...画布,在那里你可以拖动对象 和玩相机视图以及...有一个着名的例子 - “Draggable Cubes”, 以及我的项目非常相似。iPhone上的Three.js项目 - 事件问题(选择和拖动对象)

我的项目有3个主要事件:鼠标松开/鼠标按下/鼠标移动...

好一切正常....但我现在试图运行在iPhone上的代码,改变了我的事件 与touchstart/touchmove/touchend ...

移动对象功能似乎工作正常,但当我试图通过单击他选择对象, 它总是同一个对象被选中...而不是我指出的那个....

我想问题是这个功能:

function onDocumentMouseDown(event) { 

      event.preventDefault(); 

      var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5); 
      projector.unprojectVector(vector, camera); 

      var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize()); 

      var intersects = ray.intersectObjects(objects); 

      if (intersects.length > 0) { 

       SELECTED = intersects[ 0 ].object; 

       var intersects = ray.intersectObject(plane); 
       offset.copy(intersects[ 0 ].point).subSelf(plane.position); 

      } 
} 

有没有人有一个想法是什么问题?

回答

7

在这一行:

var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5); 

您使用鼠标Vector2对象,但你不初始化。

像这样的东西应该工作:

mouse.x = +(event.targetTouches[0].pageX/window.innerwidth) * 2 +-1; 

mouse.y = -(event.targetTouches[0].pageY/window.innerHeight) * 2 + 1;