【发布时间】:2015-11-03 23:14:42
【问题描述】:
我使用 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>
【问题讨论】:
-
当你说它根本不起作用时,你到底是什么意思?您能否发布一个仅使用处理代码而不是额外的 JavaScript 代码(这不是必需的)的最小示例?
-
我的意思是mouseX和mouseY根本无法在移动设备上运行,在这里,我发布了没有您建议的javascript的最小示例,请在您的移动设备上尝试:mqvlm.github.io/prueba.html
-
你能在你的问题中发布这个最小示例的代码吗?
-
另外,当我在手机上运行它时,它似乎工作正常。除了草图由于某种原因出现了两次。
-
你在安卓上运行它吗?我在 Safari iOS 7.2.1 上运行它。我用于最小示例的代码只是常规
标签: javascript processing processing.js