Android系统上的“touchmove”事件:Transformer Prime

我正在研究一个变压器垫和开发一个绘图板。 我使用PhoneGap(javascript)来编写代码而不是JAVA。

touchmove事件是相当奇怪的。

我想,当我将手指放在垫上时,它会不断地收集我在canvas上触摸的坐标。 但它不是! 这是荒谬的,它只收集“1”坐标:我的手指移动到canvas上的第一个点。

这里是我的关于“Touch &&移动事件”的代码:

function touchStart(event){ if (event.targetTouches.length == 1) { var touch = event.targetTouches[0]; if (event.type == "touchstart") { line_start_x= touch.pageX- canvas_org_x; line_start_y= touch.pageY- canvas_org_y; context.beginPath(); context.moveTo(line_start_x, line_start_y); }//if }//if 1 }//function. function Touch_Move(event){ line_end_x= event.touches[0].pageX- canvas_org_x; line_end_y= event.touches[0].pageY- canvas_org_y; context.lineTo(line_end_x, line_end_y); context.stroke(); test++; } 

我不知道为什么每次我把手指放在垫子上,想画出一条线,曲线或任何我想要的东西。 当手指移动时,只会出现一个非常短的段。 所以我在这个js文件的开头声明了一个variables:“var test = 0”。 我发现,尽pipe我将手指放在垫子上而没有离开或停止,但“testing”的值仍然是1.这意味着我将手指放在它上面。 但它不会持续触发事件:“Touch_Move”。

我现在能做什么? 我需要一个相应的事件来触摸板上的“mousemove”。 至less,事件必须不断被触发。

  Thank you! 

Solutions Collecting From Web of "Android系统上的“touchmove”事件:Transformer Prime"

哦,耶稣。 我终于find答案: 请参考这个网站。

如果您使用的是Android系统,请记住“touchmove”仅在您的手指在垫上移动时才会触发。 所以,如果你想画一条线或什么的,你必须这样做:

 function onStart ( touchEvent ) { if( navigator.userAgent.match(/Android/i) ) { // if you already work on Android system, you can skip this step touchEvent.preventDefault(); //THIS IS THE KEY. You can read the difficult doc released by W3C to learn more. } 

如果你有更多的时间,你可以阅读W3C关于引入“移动触摸”的文档,这是很难理解的。 文件很烂。