2015-02-18 3 views
5

У меня возникли трудности с реализацией multi-touch панорамирования с помощью hammer.js. Панорамные события запускаются только с одиночными указателями. Если я попытаюсь перетащить двумя пальцами, он не выстрелил, пока я не отпустил хотя бы один палец. Должен ли я сделать что-то особенное для конфигурации молотка?Multi-Touch Panning with Hammer.js

EDIT: Я уже нашел, что я могу настроить 2 указателя для события панорамирования, но теперь я вижу, что у Chrome есть встроенная функция, чтобы открыть контекстное меню на двух пальцевом кране, что большую часть времени предотвращает панорамирование от распознавания. Если я просто поймаю событие contextmenu и вызову preventDefault(), он (очевидно) полностью отключит распознаватель панорамирования. Любой другой способ?

BR, Daniel

+0

Вы говорите об Chrome Desktop, Chrome для Android/iOS? Мультитач панорамирования в hammer.js 2.0.4 работает для меня более или менее во всех версиях Chrome (Desktop, Android). У Hammer.js 2.0.4 есть некоторые проблемы с перескакиванием значений «ev.deltaXY» (multitouch panning) и одной проблемой с «panstart» (если это то, о чем вы говорите), но есть обходные пути для обоих из них, пока они не будут исправлено. – Daniel

+1

Как вам удалось настроить 2 указателя для события панорамирования? Я пробовал все, но безрезультатно. Не могли бы вы мне помочь? – myTerminal

ответ

1

Вы должны использовать 'пинч' событие. Для двух пальцев панорамирования и масштабирования. Событие PINCH имеет свойство: «указатели», с событиями пальца;

var previous_pinch_delta = { 
     x: 0, 
     y: 0 
    }; 
    hammered.on('pinch', function(e){ 
     camera.pan(e.deltaX-previous_pinch_delta.x, e.deltaY-previous_pinch_delta.y); 
     previous_pinch_delta = { 
      x: e.deltaX, 
      y: e.deltaY 
     }; 
     }); 
+0

Спасибо за это! Я использовал 'e.scale' слишком различающе между двумя пальцами и масштабированием. Это не идеально (вы получаете немного панорамирования, пока не нажмете порог масштабирования), но все равно великолепно. –

+0

Я не понимаю этого ответа. Не могли бы вы объяснить, как вы отличаете панорамирование и масштабирование? В вашем обратном вызове с щепоткой кажется, что вы только панорамируете, а не увеличиваете масштаб. – Michael

+0

Привет, Майк. К сожалению, у меня недостаточно времени для объяснения, но я могу скопировать полный источник моего сенсорного датчика, надеюсь, что он вам поможет: https://pastebin.com/Xk4AmcdC – saike