Processing.js mouseX和mouseY无法在移动设备上运行

时间:2015-11-03 23:14:42

标签: javascript processing processing.js

我使用processing.js向我的网站发布了一个简单的处理草图,但是当我在iPhone和iPad上打开它时根本不起作用。我找到了一些javacript使其工作并且它有所帮助,但仍然mouseX获取手指相对于整个页面的位置而不是画布区域,因此它不能完全正确定位。我该怎么办?

代码在此处生效:http://mqvlm.github.io/blog/rect.html

这是我正在使用的javascript:

<canvas ontouchstart="touchStart(event);"
ontouchmove="touchMove(event);"
ontouchend="touchEnd(event);"
ontouchcancel="touchCancel(event);"
id="sketch" width="300" height="300" data-processing-sources="/code/rect.pde"> </canvas>

<script type="text/javascript">

var processingInstance;


function setProcessingMouse(event){
  if (!processingInstance) {  
    processingInstance = Processing.getInstanceById('sketch');  
    }  

  var x = event.touches[0].pageX;
  var y = event.touches[0].pageY;

  processingInstance.mouseX = x;
  processingInstance.mouseY = y;
};

function touchStart(event) {
event.preventDefault();
setProcessingMouse(event);
processingInstance.mousePressed();
};

function touchMove(event) {
event.preventDefault();
setProcessingMouse(event);
processingInstance.mouseDragged();
};

function touchEnd(event) {
event.preventDefault();
setProcessingMouse(event);
processingInstance.mouseReleased();
};

function touchCancel(event) {
event.preventDefault();
setProcessingMouse(event);
processingInstance.mouseReleased();
};

</script>

1 个答案:

答案 0 :(得分:0)

而不是pageXpageY,您应该使用screenXscreenY来获取相对于用户屏幕的位置:

var x = event.touches[0].screenX;
var y = event.touches[0].screenY;

或者,如果您想要相对于视口的位置,可以使用clientXclientY

var x = event.touches[0].clientX;
var y = event.touches[0].clientY;

您可以查看完整的属性列表和更多信息here