gpt4 book ai didi

javascript - 无法在 Android 设备上的 Javascript 中获取触摸事件的坐标

转载 作者:IT老高 更新时间:2023-10-28 21:55:49 25 4
gpt4 key购买 nike

我正在测试 HTML5 Canvas 并使用 Javascript 为支持触控的设备进行绘制。虽然我让它在 iOS 设备上工作,但我无法让它在 Android 上工作。我已将其缩小到 event.pageX 不返回坐标,而是返回 0 或未定义(基于浏览器)。

我已经在运行 Cyanogen 7.1 的 Opera Mobile 和 Dolphin 浏览器的手机上以及运行标准浏览器的 Galaxy Tab 10.1 (Android 3.1) 上对其进行了测试。

我修改了代码以在显示 event.pageX、event.layerX 和 event.clientX 坐标的 touchstart 事件上显示警报(我知道 clientX 应该只在 iOS 上工作)。

canvas.addEventListener('touchstart', function(e) {
if (readyToDraw){
alert("PageX: "+e.pageX+","+e.pageY+"\n LayerX: "+e.layerX+","+e.layerY+"\n + clientX: "+e.clientX+","+e.clientY);
// prevent the browsers default action!
e.preventDefault();
paint = true;
// Get coordinates
var c = getCoords(e);
addClick(c.x, c.y, false);
}
});

我已经在 iOS 中完成了完整的绘图,但甚至无法让 Android 注册坐标,有什么想法吗?

最终编辑:我解决了这个问题,请参阅接受的答案。

最佳答案

最终编辑:好的,我得到它的工作,如果有人发现这个并有类似的问题,你需要访问事件中的触摸数组,如果只使用单点触控(而不是多点触控)取出第一个项目数组,如下所示,或者如果不准确,您可能需要对其进行偏移:

var touch = event.touches[0];
var x = touch.pageX;
var y = touch.pageY;
// or taking offset into consideration
var x_2 = touch.pageX - canvas.offsetLeft;
var y_2 = touch.pageY - canvas.offsetTop;

关于javascript - 无法在 Android 设备上的 Javascript 中获取触摸事件的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9585487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com