在Firefox中“解析”触摸事件

时间:2012-08-16 00:25:45

标签: javascript firefox multi-touch

我有一个需要在Windows 7触控平板电脑上运行Firefox的演示版。根据{{​​3}},Mozilla已经实施了标准化的触摸API。但是,这不适用于Windows 7平板电脑。 FF 14中没有触发这些事件。

我们必须使用MozTouchMove事件。但它所做的只是调度顺序事件。 WI.e.手指然后手指两个然后手指三个等。

甚至很难将两个手指与一个手指区分开来。我必须测量更新之间的距离,为每个“区域”分配我自己的“ID”。在那之后,为了检测双指拖动,我们必须确保整个解析保持不变 - 如果一个手指上升可能会“解开”,因为“第二”位置被“第一”位置覆盖。试图想出办法。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

// multitouch event handler for two finger scrolling in x or y
function onTouchMove(event) {

    var eventTouch = new point(event.clientX, event.clientY);

    if (previousTouch.x == 0 && previousTouch.y == 0) {
        previousTouch = new point(eventTouch.x, eventTouch.y);                
        return;
    }


    //filter really close touches
    //in this case, assume single touch and defer to system mouse
    if (previousTouch !== undefined) {
        if (eventTouch.distance(previousTouch) < 6) {
            return;
        }
    }

    fingerIndex ++;

    // only track every other touch to keep fingers consistent
    if( fingerIndex % 2 == 0)
    {
        document.getElementById("finger1").style.left = previousTouch.x + "px";
        document.getElementById("finger1").style.top = previousTouch.y + "px";

        document.getElementById("finger2").style.left = eventTouch.x + "px";
        document.getElementById("finger2").style.top = eventTouch.y + "px";
    }

    previousTouch = eventTouch;
}

答案 1 :(得分:0)

您链接到的状态文档日期为2010年7月 - 两年前Mozilla 关闭。因此,您现在正在使用deprecated单点触控API并尝试实现多点触控 - 这必然会变得丑陋。文档实际上指向了自Firefox 12以来可用的新multi-touch API。这使您可以正确区分触摸,文档实际上会详细解释如何执行此操作。