2011-11-29 17 views

回答

4

这取决于您需要什么功能,但在手机上尝试this。 它应该呈现一些类似于这些的立方体结构: three.js cubes http://lifesine.eu/labs/media/images/vector.gif

应该可以触摸和拖动。这是基于带有three.js所老拖动立方体样本,这里使用的事件:

document.addEventListener('mousedown', onDocumentMouseDown, false); 
document.addEventListener('touchstart', onDocumentTouchStart, false); 
document.addEventListener('touchmove', onDocumentTouchMove, false); 

而且这里的听众:

function onDocumentMouseDown(event) { 

       event.preventDefault(); 

       document.addEventListener('mousemove', onDocumentMouseMove, false); 
       document.addEventListener('mouseup', onDocumentMouseUp, false); 
       document.addEventListener('mouseout', onDocumentMouseOut, false); 

       mouseXOnMouseDown = event.clientX - windowHalfX; 
       targetRotationOnMouseDown = targetRotation; 
      } 

      function onDocumentMouseMove(event) { 

       mouseX = event.clientX - windowHalfX; 
       mouseY = event.clientY - windowHalfY; 

       targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.02; 
      } 

      function onDocumentMouseUp(event) { 

       document.removeEventListener('mousemove', onDocumentMouseMove, false); 
       document.removeEventListener('mouseup', onDocumentMouseUp, false); 
       document.removeEventListener('mouseout', onDocumentMouseOut, false); 
      } 

      function onDocumentMouseOut(event) { 

       document.removeEventListener('mousemove', onDocumentMouseMove, false); 
       document.removeEventListener('mouseup', onDocumentMouseUp, false); 
       document.removeEventListener('mouseout', onDocumentMouseOut, false); 
      } 

      function onDocumentTouchStart(event) { 

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

        event.preventDefault(); 

        mouseXOnMouseDown = event.touches[ 0 ].pageX - windowHalfX; 
        targetRotationOnMouseDown = targetRotation; 

       } 
      } 

      function onDocumentTouchMove(event) { 

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

        event.preventDefault(); 

        mouseX = event.touches[ 0 ].pageX - windowHalfX; 
        targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.05; 

       } 
      } 

注意有使用的几个变量,这可能不是很明显,比如targetRotation,targetRotationOnMouseDown等。随意使用该链接的源代码,但请注意,我去年编码过,因此,一些three.js代码可能略有不同(也许材料等),但事件部分应该仍然工作,如果你把它粘贴到你的代码中。

HTH

+0

感谢您的帮助再次伙计!......我想你的演示,和伤心,但真实的,它不工作在iPhone上......我的意思是工作原理是(Y)唯一的旋转。第二件事是......我的问题更大......不仅需要旋转“相机”......我在画布上制作了可拖动的对象 – BorisD

+0

看到此问题:http://stackoverflow.com/questions/8307535/three-js-project-on-iphone-events-issue-selectdrag-object – BorisD

+0

从技术上讲,如果你可以在Y上旋转,那么触摸事件就可以工作,**回答你的问题**(“Wich javascript events can I用于iphone“);)。它仅适用于Y,因为这是我编码的方式,除此之外没有别的办法可以处理它(如拖拽)。目前无法提交其他问题。看着你的[其他问题](http://stackoverflow.com/questions/8292486/three-js-how-to-detect-what-shape-was-selected-after-drag),并发现了一些问题,但正如我所说,目前没有时间。将在本周晚些时候尝试 –