android系统上的"touchmove"事件:Transformer Prime

Als*_*ton 13 javascript android transformer-model touch cordova

我正在研究Transformer Pad并开发一个绘图板.我使用PhoneGap(javascript)编写代码而不是JAVA.

但触摸移动事件非常奇怪.

我想当我将手指放在垫子上时,它会不断地收集我在画布上触摸的坐标.但它没有!这很荒谬,它只收集"1"坐标:我的手指移动到画布上的第一个点.

以下是关于"Touch && Move事件"的代码:

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++;                 
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么每次我把手指放在垫子上,试图绘制线条,曲线或任何我想要的东西.当手指移动时,仅出现非常短的片段.所以我在这个js文件的开头声明了一个变量:"var test = 0".我发现虽然我在没有离开或停止的情况下将手指放在垫上,但"测试"的值仍为1.这意味着我将手指放在它上面.但它不会持续触发事件:"Touch_Move".

我现在能做什么?我需要一个相应的事件来触摸板上的"mousemove".至少,必须不断触发事件.

                                                                   Thank you!
Run Code Online (Sandbox Code Playgroud)

Als*_*ton 38

哦,耶稣.我终于找到了答案: 请参考这个网站.

如果您使用Android系统,请记住"touchmove"仅在您的手指围绕打击垫移动时触发ONCE.所以,如果你想绘制一条线或什么,你必须这样做:

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.
}
Run Code Online (Sandbox Code Playgroud)

如果你有更多的时间,你可以阅读W3C关于引入'movetouch'的文档,这真的很难理解.医生糟透了.

  • 所以我有一些功能,当我们向左/向右滚动时(在整页幻灯片上),我想转到下一张幻灯片.使用`preventDefault()`使它工作,但然后定期滚动(向上和向下)不起作用(一些幻灯片比屏幕高...幻灯片可能不是它实际上最好的描述符,但你得到了理念). (4认同)
  • 是否可以保持滚动启用?我需要同时滚动和连续触摸移动。 (2认同)