gpt4 book ai didi

javascript - 在 Hammer.js 中点击后立即检测平移,将其称为双击平移

转载 作者:行者123 更新时间:2023-11-30 00:13:34 25 4
gpt4 key购买 nike

我正在尝试使用 HammerJS 检测双击和平移(点击一次,然后按下、移动和释放),但我不确定该怎么做。我阅读了文档,但我不明白与“双击”点击和平移相比,我如何检测不到“简单”平移。

其实我可以用下面的代码检测到,但是我想知道是否有更好的解决方案。

    var gestureManager = new Hammer.Manager( this.canvas, {
recognizers: [
[ Hammer.Tap ],
[ Hammer.Pan ],
[ Hammer.Pan, { event: 'panend' } ]
]
);

gestureManager.on( 'tap', ( ev ) => {
this.tapTime = new Date().getTime();
});

gestureManager.on( 'pan', ( ev ) => {
var panTime = new Date().getTime();

if ( panTime - this.tapTime < 750 ) {
this.isDragEnabled = true;

...
}
});

gestureManager.on( 'panend', ( ev ) => {
if ( this.isDragEnabled ) {
...
this.isDragEnabled = false;
}
});

有什么建议吗?

最佳答案

我做过类似的事情,试图在触摸持续一段时间后检测平底锅。它基于您可以启用和禁用识别器这一事实。

var shortPress = new Hammer.Press({
time: 500, // how long to press before you can start dragging
event: 'shortPress'
});
var pan = new Hammer.Pan({ event: 'pan', enable: false });

var mc = new Hammer.Manager(element);
mc.add(shortPress);
mc.add(pan);

mc.on("shortPress", function(ev) {
pan.set({ enable: true });
});

mc.on("pan", function(ev) {
// do whatever you need
});

// don't forget to disable the pan recognizer when the dragging ends
mc.on("panend pancancel shortPressup", function(ev) {
pan.set({ enable: false });
});

但对于您的双击和平移场景,我认为它更复杂,因为您不能仅通过轻敲 2 次来切换 Press 识别器,因为只有在您抬起手指时才会检测到它。所以它更像是检测水龙头,启用平移,但如果它在一定时间后没有启动,则设置超时以禁用它。但是您已经这样做了,在这种情况下您的代码似乎更简单。

顺便说一句,您可能还希望在平移之前允许按下,以允许双击时的情况,但让手指静止一会儿,然后才移动它。

关于javascript - 在 Hammer.js 中点击后立即检测平移,将其称为双击平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35556162/

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