2014-12-02 39 views
1

當前平移過程中我使用Hammer.js監聽一個元素上水平盤。 當deltaX達到閾值時,我想殺掉當前的pan,強制執行「panend」,並在用戶下次嘗試「panstart」時恢復平移。力「panend」使用Hammer.js 2.0.4

通過它似乎並不可能與庫現在的文檔閱讀。 任何人都知道解決方案?

var mc = new Hammer.Manager(@option_elm.get(0), 
     recognizers: [ 
      [Hammer.Pan,{direction: Hammer.DIRECTION_HORIZONTAL}] 
     ] 
    ) 

    mc.on('panleft', function(e) { 
     e.kill() // something simple like this...? 
    }) 

回答

0

我有同樣的問題。 Hammer.js有一個名爲stop();的構建方法。你可以使用它你這樣的 「penleft」 事件函數內部:mc.stop();

http://hammerjs.github.io/api/#stop%28[force]%29

這種習慣的力量 「penend」。 Hammer.js將忽略所有輸入。不幸的是這種方法有一個巨大的bug。事件對象將在所有新輸入上有錯誤的參數: https://github.com/hammerjs/hammer.js/issues/811

所以我曾經使用一個名爲「isFired」的助手變量。您的代碼可以是這個樣子:

var mc = new Hammer.Manager(@option_elm.get(0), 
     recognizers: [ 
      [Hammer.Pan,{direction: Hammer.DIRECTION_HORIZONTAL}] 
     ] 
    ), 
    isFired = false; 

mc.on('panstart', function(e) { 
    isFired = false; 
}); 
mc.on('panleft', function(e) { 
    if (!isFired) { 
     isFired = true; 
     yourCustomCallback(); 
    } 
}); 
mc.on('panend', function(e) { 
    isFired = false; 
}); 

它這個變量重置爲false的「penstart」和「panend」是很重要的。