【问题标题】:The "touchmove" event on android system: Transformer Primeandroid系统上的“touchmove”事件:Transformer Prime
【发布时间】:2012-06-26 09:34:20
【问题描述】:

我正在制作变压器垫并开发绘图板。 我使用 PhoneGap(javascript) 而不是 JAVA 来编写代码。

但是 touchmove 事件很奇怪。

我想当我在pad上移动我的手指时,它会不断收集我的坐标 触摸画布。但事实并非如此! 太荒谬了,它只收集“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++;                 
}

我不知道为什么每次我在垫子上移动我的手指,试图画一条线、曲线或任何东西 我想要。当手指移动时,只会出现一个 VERY SHORT 段。所以我在这个js文件的开头声明了一个变量:“var test=0”。我发现虽然我在pad上移动手指没有离开或停止,但“test”的值仍然是1。这意味着我在它上面移动了手指。但它没有 连续触发事件:“Touch_Move”。

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

                                                                   Thank you!

【问题讨论】:

    标签: javascript android cordova touch


    【解决方案1】:

    哦,耶稣。我终于找到了答案: Please take reference for this site.

    如果您在 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 关于引入 'movetouch',真的很难理解。医生很烂。

    【讨论】:

    • 所以我有一些功能,当他们向左/向右滚动时(在整页幻灯片上),我想转到下一张幻灯片。使用preventDefault() 使其工作,但随后常规滚动(向上和向下)不起作用(有些幻灯片比屏幕高......幻灯片可能不是它实际的最佳描述符,但你明白了) .
    • 我还必须将 prevenDefault 添加到 touchmove 事件本身才能完成这项工作。
    • 是否可以保持滚动功能?我需要同时滚动和连续触摸移动。
    • 我一直在网上搜索这个!
    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多