2011-09-13 7 views
3

私はユーザーコントロールを設計しており、マウスのコントロールをコーディングしようとしています。これが私がユーザー入力を得るために考え出したものです。Javascriptでマウスの移動距離を検出するための良いテクニックは何ですか?

var mouseInput = new GLGE.MouseInput(window); 
window.onmousemove = function(ev){ 
     var dx = window.mouseX - prevMousePos.x; 
     var dy = window.mouseY - prevMousePos.y; 
     prevMousePos ={ 
     x:window.mouseX, 
     y:window.mouseY 
    }; 
    // I do movement calculations with dx and dy here 
} 

しかし、マウスがウィンドウの終わりに達すると、動きを検出しないため、私が上に出たものは完全ではありません。

マウスの動きを検出する良い方法はありますか?その方法を使用すると、マウスが画面の端にあるときに移動距離を計算できないため、座標を使用して計算しないでください。

PS:私がデザインしているのは、Google Streetviewや一人称シューティングゲームのようなものです。私は、ユーザーが無限に一方向にマウスを動かせるようにしたい。

+0

マウスの位置をウィンドウの外にキャプチャする必要がありますか、マウスを押したときだけですか? – pimvdb

+0

@pimvdbの外側にもウィンドウがあります。私は、ユーザーがアプリに集中することを願っています。実際には、これはブラウザのビデオゲームであるため、マウスが消えてしまいます。 – deztructicus

答えて

1

いいえ、ブラウザウィンドウの外でマウスの動きを処理する方法はありません。

2

つまり、あなたはすでにonmuseoverイベントハンドラを使用しています(Javascriptは非同期であるため、最も効率的です)。だから、あなたは彼が前の距離を計算するだけで、ユーザーがマウスを動かすときだけです。もし彼がさらにミューズを動かさなければ、プレイヤーはちょうど同じ方向に進みます。

関連する問題