2013-05-02 3 views
3

Я использовал статью this (и некоторые другие), чтобы попытаться реализовать распознавание жестов в моем приложении, и это действительно работает. Однако то, что я хочу сделать, это обнаружить множественные жесты; например, салфетки и прикосновения. То, что я, похоже, не в состоянии сделать, - установить, вызвано ли событие MouseUp концом жесты или одним касанием.WinJS gestureRecognizer - как ловить многократные жесты

function processUpEvent(e) { 
    lastElement = e.currentTarget; 
    gestureRecognizer.processUpEvent(e.currentPoint); 

    processTouchEvent(e.currentPoint); 
} 

Что происходит в настоящее время, оно обрабатывается как. Как я могу определить, имеет ли пользователь «отпустить» экран для салфетки или касания?

EDIT:

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, но один или другой.

ответ

1

Я нашел способ сделать это, но это не очень:

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; 
}); 
1

Вы можете посмотреть мою демонстрацию «ввода» в codeSHOW. Просто установите приложение codeSHOW (http://aka.ms/codeshowapp) и посмотрите демо-версию Pointer Input и «см. Код» или просто перейдите к source code on CodePlex. Надеюсь, что помогает.

+0

Я не уверен, что это ответ на мой вопрос. Хотя это и охватывает перетаскивание, мне нужно захватить направление. Я уточнил свой вопрос с некоторыми более конкретными деталями. –

Смежные вопросы