2014-02-20 12 views
3

我正在使用hammer.js拖動元素,我正在尋找一種方式來區分憤怒將以何種方式進行。檢測到hammer.js事件的方向變化

在一般我使用

evt.gesture.deltaX>0 //right 
evt.gesture.deltaX<0 //left 

deltaX指的拖累開始,所以當我在拖動過程中改變了,我不知道。

任何方式立即得到方向變化?

+0

想知道的答案是否幫助工作... –

回答

0

可以使用

evt.gesture.direction 

可能值左/右/上/下 檢查這裏的演示:http://eightmedia.github.io/hammer.js/examples/events.html

+0

方向有同樣的問題,是節目的權利,即使我開始向左拖動。 任何其他的想法? – Bruse

+0

你使用觸摸事件嗎?如果是的話,我們無法知道方向。只有拖動事件後,我們才能知道方向。只聽到dragleft和dragright事件可能會更好。 var hammertime = Hammer(element).on(「dragleft dragright」,function(event){ alert('hello!'); }); – Tamura

+0

好的。好主意:) – Bruse

0

你可以通過最後的中心值拖動過程中確定正確的方向如下圖所示的事件和當前事件到Hammer.utils.getDirection()實用方法:

var el = document.getElementById('sandbox'); 
 
var output = document.getElementById('output'); 
 
var lastCenter; 
 

 
function onDrag(ev){ 
 
    var center = ev.gesture.center; 
 
    if (lastCenter) 
 
     /* use the built in direction determination of hammer 
 
     but use the last position instead of the starting position */ 
 
     output.innerHTML = Hammer.utils.getDirection(lastCenter, center); 
 
    lastCenter = center; 
 
} 
 

 
function onRelease(){ 
 
    lastCenter = null; 
 
} 
 

 
var hammertime = Hammer(el); 
 
hammertime.on("drag", onDrag); 
 
hammertime.on("release", onRelease);
#sandbox 
 
{ 
 
    width: 100%; 
 
    height: 150px; 
 
    line-height:150px; 
 
    text-align:center; 
 
    color:#fff; 
 
    background-color: #29A3CC; 
 
}
<script src="//cdnjs.cloudflare.com/ajax/libs/hammer.js/1.1.3/hammer.min.js"></script> 
 
<div id="sandbox">Drag the mouse here</div> 
 
<div id="output"></div>

注:這不符合最新的x版本