2010-05-08 107 views
2

我有一台三星LD220Z多点触摸显示器,当我尝试使用一些WPF和触摸功能时,触摸事件不会触发。然而,鼠标放下事件似乎在触发。操纵和触摸事件不会触发,但鼠标事件呢?

这是否意味着我必须考虑到并非所有的触摸屏行为都相同,并且我如何在屏幕上获得触摸输入?我试过了微软发布的Windows 7 Touch Pack。多点触控功能似乎在那里工作。

有关如何进行此操作的任何建议?

+0

您使用的是什么版本的WPF的? – Dave 2010-05-08 16:27:47

+0

Wich永久版本的WPF附带正常的Visual Studio 2010和.NET 4安装。 – 2010-05-08 16:55:43

+0

好的,只是检查。我*想*你应该拥有你需要的一切,然后。我在VS2008仍然和IIRC你必须安装库,以使其在3.5SP1上工作。 – Dave 2010-05-08 18:35:38

回答

2

事件touchstart工作,但touchend没有。你可以使用onmouseup =“SOMEfun()” 即使是三星Galaxy 3也是触发事件的问题。 添加第一个事件,大公将致力于但是 两个场景: 1)首先添加onmouseup,比tauchstart或更好 2)检查移动或桌面,比加适量事件 你可以用我detectbrowser功能,它很漂亮(给出浏览器类型的名称,如mobile_chrome_android_tablet或firefox_desktop,safari_ipad)

使NOMOBILE为全局,您可以简单地将var NOMOBILE = 0;与窗口[“NOMOBILE”] = 0;

下载浏览器和设备检测器: detect browser and device also class

类名是DETECTBROWSER()

(在脚本第一行)

变种BROWSER =新DETECTBROWSER()

检查这BROWSER.NAME

这甚至是疯狂的脚本。跟踪10个手指,在同一时间(在canvas2d) 链接:https://github.com/zlatnaspirala/multi-touch-canvas-handler

例如1)

 document.getElementById('myCanvas').addEventListener('touchstart', function(event) { 
     event.preventDefault(); 
     var touch = event.touches[0]; 
     /* Avatar go left */ 
      if (touch.pageX < 235) { 
     if (backgroundX < 0){ 
     left = 1; 
     } 
     /* Avatar go right */ 
     if (touch.pageX > 470) { 
     right=1; 
     } 
     /* Avatar go lower distance */ 
     if (touch.pageX > 235 && touch.pageX < 470 && touch.pageY >250) { 
     distance--; 
     } 
     /* Avatar go to high distance */ 
     if (touch.pageX > 235 && touch.pageX < 470 && touch.pageY <250) { 
     distance++; 
     } 
     } ,false); 
     // solution for touchend 
      function ENDoff(){ 

      if (moveLEFT==1) { moveLEFT=0; } 
      if (moveRIGHT==1) { moveRIGHT=0; } 
      } 

HTML CODE 
<canvas id="myCanvas" width="480" height="960" onmouseup="touch_UP();"></canvas>