0

touchstart の初期値と touchmove の実際の値の間の距離を計算したい。

例えば ​​:

画面に触れます: startX = 100; 次に、画面上で指を動かします: moveX = 150;

startX と moveX からの距離は (moveX - startX) = 50 です。

コードの更新:

function touch(event) {
var moveX = event.pageX;
var totalMoved = Math.abs(document.startX - moveX);
shipX = totalMoved;
consoleLog(totalMoved);
};

function touchStart(event) {
    touch(event.touches[0]);
    document.startX = event.pageX;
};

function touchMove(event) {
    event.preventDefault();
    touch(event.touches[0]);
}; 

function touchEnd(event) {
    touch(event.touches[0]);
    var totalMoved = 0;
}; 
4

2 に答える 2

0

はい、可能です。関数で表示されるスコープに値を格納するだけですtouchMove()。説明のために、グローバル スコープを汚染することでこの問題を解決できます。

function touchStart(event) {
    touch(event.touches[0]);
    window.startX = event.pageX;
};

function touchMove(event) {
    event.preventDefault();
    var moveX = event.pageX;
    var totalMoved = Math.abs(window.startX - moveX);
}; 

もちろん、グローバル スコープを汚染することなくこれを行う方法はいくつかあります。たとえば、イベント ハンドラー関数を、必要な状態をメンバー変数として保持するオブジェクトのメンバーにすることができます。または、ハンドラーは変数touchStart()をカプセル化するクロージャーを作成し、それをハンドラーに設定することもできます。等々。startXtouchesMoved

于 2012-02-15T10:41:02.360 に答える
0

YoumoveXはさまざまな関数で宣言されているため、さまざまな変数を示します。代わりに、これらすべての関数を囲むスコープで宣言var moveXします ( で同じことをしたいと思うかもしれませんstartX)。

于 2012-02-15T10:38:34.100 に答える