WinJS gestureRecognizer - как поймать несколько жестов
Я использую эту статью (и некоторые другие), чтобы попытаться реализовать распознавание жестов в моем приложении, и это действительно работает. Однако то, что я хочу сделать, - это обнаружить несколько жестов; например, свайп и касание. Чего я, кажется, не могу сделать, так это установить, вызвано ли событие MouseUp
окончанием жеста или одним прикосновением.
function processUpEvent(e) {
lastElement = e.currentTarget;
gestureRecognizer.processUpEvent(e.currentPoint);
processTouchEvent(e.currentPoint);
}
То, что происходит в настоящее время, обрабатывается одновременно. Как я могу определить, отпустил ли пользователь экран на некоторое время? размах или прикосновение?
Правка:
var recognizer = new Windows.UI.Input.GestureRecognizer();
recognizer.gestureSettings = Windows.UI.Input.GestureSettings.manipulationTranslateX
recognizer.addEventListener('manipulationcompleted', function (e) {
var dx = e.cumulative.translation.x
//Do something with direction here
});
var processUp = function (args) {
try {
recognizer.processUpEvent(args.currentPoint);
}
catch (e) { }
}
canvas.addEventListener('MSPointerDown', function (args) {
try {
recognizer.processDownEvent(args.currentPoint);
}
catch (e) { }
}, false);
canvas.addEventListener('MSPointerMove', function (args) {
try {
recognizer.processMoveEvents(args.intermediatePoints);
}
catch (e) { }
}, false);
canvas.addEventListener('MSPointerUp', processUp, false);
canvas.addEventListener('MSPointerCancel', processUp, false);
Поэтому мне нужно обрабатывать и processUp
, и manipulationcompleted
, но либо одно, либо другое.2 ответа:
Вы можете посмотреть мою демо-версию" input " в codeSHOW. Просто установите приложение codeSHOW (http://aka.ms/codeshowapp ) и посмотрите на указатель Input demo и "посмотрите код" или просто перейдите к исходному коду на CodePlex. Надеюсь, это поможет.
Я нашел способ сделать это, но это не очень красиво:
var eventFlag = 0; var processUp = function (args) { try { recognizer.processUpEvent(args.currentPoint); if (eventFlag == 0) { // do stuff } else { eventFlag = 0; } } catch (e) { } } recognizer.gestureSettings = Windows.UI.Input.GestureSettings.manipulationTranslateX recognizer.addEventListener('manipulationcompleted', function (e) { var dx = e.cumulative.translation.x //Do something with direction here eventFlag = 1; });