我正在(尝试)为我正在使用cordova进行eclipse的移动游戏创建一些基本元素。我想在这里做的主要事情是在同一个元素上设置两个tap事件。下面的代码显示了我是如何尝试解决这个问题的,但是当我尝试双击时,它将无法被检测到 - 我得到的只是两个单击。我尝试了不同的东西,但没有一个帮助过。
当双击失败时,我也会在控制台中收到此警告:“尝试完成输入事件,但输入事件接收器已经处理”。
var doubletapped = false,
tapped = false;
$(function() {
var element = document.getElementById('blue');
var hammertime = Hammer(element).on("tap doubletap", function(event) {
if (event.type == 'doubletap') {
tapped = false;
doubletapped = true;
alert('doubleTap!');
console.log('doubleTap!');
}
if (event.type == 'tap') {
doubletapped = false;
tapped = true;
alert('single tap!');
console.log('singleTap!');
}
});
});
正如在这个Hammer.js changelog中所解释的那样,我设置了tap_always = false,但它并没有什么区别。您有什么推荐的吗?有没有其他库我可以做同样的事情没有这个问题?
我想要实现的是检测元素上的不同点击或/和手势,然后执行不同的操作。例如,如果单击元素#1,则播放音频文件#1,如果双击同一元素,则播放音频文件#2。
帮助将不胜感激!
干杯
答案 0 :(得分:2)
试试这个 -
var hammer = new Hammer.Manager(element, {});
var singleTap = new Hammer.Tap({event: 'singletap' });
var doubleTap = new Hammer.Tap({event: 'doubletap', taps: 2 });
hammer.add([doubleTap, singleTap]);
doubleTap.recognizeWith(singleTap);
singleTap.requireFailure([doubleTap]);
hammer.on('singletap', function() { console.log('single tap!') });
hammer.on('doubletap', function() { console.log('double tap!') });