2013-05-02 1 views
3

내 응용 프로그램에서 제스처 인식을 시도하고 구현하는 데 this 문서를 사용하고 있습니다. 그러나, 내가하고 싶은 것은 다중 제스처를 탐지하는 것이다. 예 : 스 와이프 및 터치. 내가 할 수있는 것처럼 보이지 않는 것은 MouseUp 이벤트가 제스처의 끝이나 한 번의 터치로 발생했는지 확인하는 것입니다.WinJS 제스처 인식기 - 여러 제스처를 함정에 넣는 방법

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

그래서 내가 모두 processUpmanipulationcompleted하지만 둘 중 하나를 처리해야합니다.

답변

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)을 설치하고 포인터 입력 데모를보고 "코드보기"를 클릭하거나 source code on CodePlex으로 이동하십시오. 도움이 되길 바랍니다.

+0

나는이 내 질문에 대답을 모르겠어요. 이것은 드래그를 다루지 만, 나는 방향을 포착해야합니다. 좀 더 자세한 내용으로 내 질문을 업데이트했습니다. –