13

トランスパッドの製作と画板の開発をしています。JAVA の代わりに PhoneGap(javascript) を使用してコードを記述します。

しかし、touchmove イベントは非常に奇妙です。

パッド上で指を動かすと、キャンバス上で触れた座標が連続的に収集されると思います。しかし、そうではありません!ばかげています。「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++;                 
}

パッド上で指を動かすたびに、線や曲線、または必要なものを描画しようとするたびに、その理由がわかりません。指が動くと、非常に短いセグメントのみが表示されます。そこで、この js ファイルの先頭で変数:"var test=0" を宣言します。パッド上で指を離したり止めたりせずに動かしても、"test" の値は 1 のままであることがわかりました。これは、パッド上で指を動かしたことを意味します。ただし、イベント「Touch_Move」を継続的にトリガーするわけではありません。

今何ができますか?タッチパッドで「mousemove」に対応するイベントが必要です。少なくとも、イベントは継続的にトリガーされる必要があります。

                                                                   Thank you!
4

1 に答える 1

38

ああ、イエス。ようやく答えが見つかりました 。 このサイトを参考にしてください。

Android システムで作業している場合、'touchmove' は、指がパッド上を移動するときに 1 回だけ起動することに注意してください。したがって、線などを描きたい場合は、次のようにする必要があります。

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.
}

さらに時間があれば、'movetouch' の導入に関する W3C のドキュメントを読むことができますが、これは非常に理解しにくいものです。ドクターは最悪です。

于 2012-06-26T16:15:57.227 に答える