2010-02-12 2 views
0

Controls.PreviewContactDown, PreviewContactUp 및 PreviewContactChanged 이벤트를 사용하여 Surface에 배치, 제거 및 이동되는 태그가 지정된 항목을 캡처합니다.이 항목은 제공되는 시뮬레이터 응용 프로그램에서 잘 작동합니다 표면.Surface 컨트롤에 대한 OnContactDown 이벤트에 지연 추가

태그가 지정된 항목을 너무 빨리 이동 한 경우 카메라는 실제로 태그의 초점을 잃고 제거 된 것으로 가정 한 다음 이동을 멈 추면 다시 캡처합니다. 그것은 우리 고객들에게 매우 나쁜 경험을 제공합니다.

내가 제안한 것은 태그가 지정된 항목 이벤트에 응답하지만 지연 후까지 이벤트 처리기를 시작하지 않는 새 이벤트를 작성하거나 작성하는 방법입니다. 즉, "ContactUp"이 (가) 발생하면 100ms를 기다리십시오. 그런 다음 이벤트 핸들러를 실행합니다. 이상적으로는, 즉

<Panel local:TagDown="TagDownEventHandler" /> 

이러한 이벤트 핸들러를 정의하기 위해 사용하는 별도의 연결된 속성을 사용할 수있을 거라고 우리가 얻을 수있는 경우는 ICommand의 대신 더 나은 것 이벤트 핸들러의 객체를 사용하는.

답변

2

TagVisualizer를 사용하는 것은 어떻습니까? 이미 화면에서 비주얼을 제거하기 전에 기본 페이드 아웃 애니메이션을 제공하여 lost/found 태그를 처리합니다.

연락처를 잃어 버리면 원래 연락처와 새 연락처가 연결되지 않기 때문에 손가락으로 같은 것을하는 것이 어렵습니다.

+0

TagVisualizer은 쉽게 우리가 구체적으로 우리가 최선을 다하고 어떤 태그를 알 수 없기 때문에 작동하지 않습니다, 나는 TagVisualizer가 듣고 어떤 태그 값을 지정해야합니다 확신합니다 - 클라이언트 00-FF 태그의 하위 집합을 사용할 수 있습니다. 동시에 TagVisualizer는 실제로 같은 문제를 겪을 수 있습니다. Dev 표면 단위에서 일어나는 일은 태그가있는 객체를 적당한 속도로 표면 전체를 "드래그"하여 실제로 해당 객체의 추적을 삭제하는 것입니다. 내부 카메라의 하드웨어 제한이 다른 것보다 더 중요하다고 생각합니다. – RTigger

+0

어떤 태그인지 모르는 경우, 모두 일치하는 방법 (프로그래밍 방식으로도 가능)은 무엇입니까? 문제 해결됨. 예, 접촉을 놓는 것은 근본적인 문제입니다 ...하지만 TV가 즉시 비주얼을 제거하지 않기 때문에 TV가 돌아 다니고 있다고 말했기 때문에 움직이는 동안 접촉이 끊어지면 다시 감지하여 부드럽게 추적합니다. – Schneider

1

우리는 실제 Surface와 접촉 이벤트에서 같은 것을 발견했습니다.

우리가 한 일 (그리고 이것은 당신의 필요에 따라 달라질 것입니다)은 "연락처 컨테이너"에 대한 기본 클래스를 만드는 것입니다. ContactUp을 처리하는 방법은 자체적으로 타이머를 시작하는 곳입니다. 제거되고있는 객체/태그를 목록에 추가합니다. 타이머가 틱하면 컨테이너와 대기중인 목록에서 객체/태그를 제거합니다.

contactDown이 발생하면 대기열에 일치하는 객체가 없다는 것을 확인합니다. 타이머를 중지하고 대기열에서 제거하고 새 태그를 무시하면 (컨테이너에 이미 있으므로) 그렇지 않다면 우리는 새 태그를 놓는 것을 처리합니다.

Codeplex에서 솔루션을 게시 할 수있게되면 코드를 수정하기 위해 코드를 수정해야합니다.

HTH