针对强制或半径的JavaScript触摸事件更新

时间:2015-09-22 06:11:50

标签: javascript events javascript-events touch

JavaScript touch事件包含radius和force的属性。不幸的是,当任一属性发生变化时,似乎不会生成事件。事件仅触发触摸开始,移动或结束等事件。谁能想到一种方法来获得更多触摸尺寸的更新?

目前为了获得半径更新,我必须摆动手指触发触摸移动事件,但我更喜欢软件解决方案。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,然后发现了这篇博文:http://blog.framerjs.com/posts/prototyping-3D-touch-interactions.html

简而言之,我们需要使用touchstart事件来捕获触摸事件,将事件分配给变量,然后使用setInterval获取force值:

var el = document.getElementById('myElement');
var currTouch = null;
var currTouchInterval = null;

attachListeners = function () {
    el.addEventListener('touchstart', enterForceTouch, false);
    el.addEventListener('touchend', exitForceTouch, false);
}

enterForceTouch = function (evt) {
    evt.preventDefault();
    currTouch = evt;
    currTouchInterval = setInterval(updateForceTouch, 10); // 100 times per second.
}

updateForceTouch = function() {
    if (currTouch) {
        console.log(currTouch.touches[0].force); // Log our current force value.
    }
}

exitForceTouch = function (evt) {
    evt.preventDefault();
    currTouch = null;
    clearInterval(currTouchInterval);
}

attachListeners();