我正在开发插件 flot.touch.js,它在 webkit 浏览器的图表上添加触摸交互性(平移和缩放)。
我也想让它在 IE10 上运行,但是我不知道如何恢复触摸点之间的空间(我需要这个来计算比例)。
在 webkit 浏览器上,我们可以使用这些变量来做到这一点:
evt.originalEvent.touches[0].pageX
evt.originalEvent.touches[0].pagey
evt.originalEvent.touches[1].pageX
evt.originalEvent.touches[1].pageY
对于 IE 的指针事件,每个触摸点都会触发一个单独的事件。与 iOS 触摸事件(其他浏览器也实现)不同,每个“指针”的状态是单独跟踪的。将其视为一个更通用的事件,将多个基于指针的输入设备分组。
每个事件对象都被赋予一个pointerId
可用于跟踪其状态的属性。要跟踪多次触摸,您需要将该pointerId 与任何其他变量一起存储在事件处理程序函数范围之外的对象中,以及您可能需要的任何其他数据。例如:
var pointers = {};
function pointerDown(evt) {
if (evt.preventManipulation)
evt.preventManipulation();
pointers[evt.pointerId] = [evt.PageX, evt.PageY];
for (var k in pointers) {
// loop over your other active pointers
}
}
function pointerUp(evt) {
delete pointers[evt.pointerId];
}
进一步阅读:
- IEBlog - 在所有浏览器中处理多点触控和鼠标输入 http://blogs.msdn.com/b/ie/archive/2011/10/19/handling-multi-touch-and-mouse-input-in-all-browsers.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)