2015-09-16 50 views
0

我正在使用Ionic製作文字遊戲,用戶可以在一次滑動中選擇一系列相鄰的字母。這些字母是作爲單獨的div元素實現的。當觸摸開始於不同元素時,離子 - 觸摸事件?

我知道什麼事件用於開始信件(touchstart似乎運作良好),但我無法弄清楚什麼事件用於中間瓷磚。 Touchstart不起作用; touchdrag似乎不起作用。實質上,當他們開始在中間滑過那個字母時,「鼠標」已經停止。

關於我如何檢測任何觸摸的任何見解(無論是開始還是用戶已經處於在另一個tile上開始的「滑動」中)?

+0

'touchmove'可以適用於所有情況。這將取代'touchstart'。 – area28

+0

奇怪的是,這些事件(包括touchmove)總是在「拖動」開始的第一個元素上觸發(即使滑動已經移動到其他元素)。事件目標始終是第一個被觸動的元素。 – blaster

+0

我已經使用[elementFromPoint](https://developer.mozilla.org/en-US/docs/Web/API/Document/elementFromPoint)之類的東西來抓取每個被touchmoved移除的元素。 – area28

回答

1

您可以使用elementFromPointtouchmove事件。因此,在touchmove回調函數中,包含事件的(e)參數,並嘗試此操作以收集所有觸摸的元素。

var touchedIds = []; 
var touches = e.originalEvent.touches; 

for(var x = 0; x < touches.length; x++) { 
    var touch = e.originalEvent.touches[x]; 
    var element = document.elementFromPoint(touch.clientX, touch.clientY); 

    touchedIds[x] = element; // however you want to add it to the array. 
} 

你最終touched.You可能需要過濾掉額外得到他們的獨特數組元素的數組,但是這將是微不足道的。