2014-03-27 58 views
0

我目前正在嘗試爲我正在使用科爾多瓦進行日食的手機遊戲創建一些基本元素。我想在這裏做的主要事情是在同一個元素上設置兩個tap事件。下面的代碼顯示了我如何試圖解決這個問題,但是當我嘗試重新檢測時,它不會被檢測到 - 我得到的只有兩個單擊。我嘗試了不同的東西,但都沒有幫助。如何將「tap」和「doubletap」綁定到Hammer.js中的相同元素?

當雙擊失敗時,我也會在控制檯中看到此警報:「嘗試完成輸入事件,但輸入事件接收器已被處置」。

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 =假,但它並沒有發揮作用。你有什麼建議?有沒有其他圖書館我可以做同樣的事情,而沒有這個問題?

我想要實現的是檢測元素上不同的水龍頭或/和手勢,然後做不同的事情。例如,如果單擊單元#1,然後播放音頻文件#1,並且如果雙擊相同的元素,則播放音頻文件#2。

幫助,將不勝感激!

乾杯

+0

你嘗試只監聽'doubletap'事件,看看你是否可以得到工作?另外,如何調整'doubletap_interval'選項 - 是否有任何影響? – whodeee

回答

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!') }); 
+0

不起作用。只識別雙擊。即使在一個水龍頭上。 編輯:它工作。 Chrome的「模擬觸摸屏」功能會受到干擾。 – JustBasti

相關問題