スペースバーをチェックすると同時に、マウスがどの方向に移動しているか、どのくらいの距離にあるかなどを追跡する方法はありますか?
これのポイントは、スペースバー、マウスの左ボタンを押したままマウスを動かすと、Photoshopがどのようにスクロールするかを再現したいということですが、マウスの左ボタンを押したままにする必要はありません。
スペースバーをチェックすると同時に、マウスがどの方向に移動しているか、どのくらいの距離にあるかなどを追跡する方法はありますか?
これのポイントは、スペースバー、マウスの左ボタンを押したままマウスを動かすと、Photoshopがどのようにスクロールするかを再現したいということですが、マウスの左ボタンを押したままにする必要はありません。
とを使用keydown()
しkeyup()
て、スペースバーが押されているかどうかを追跡し、mousemove()
イベントハンドラーでその状態を確認できます。例えば:
var space = false;
$(function() {
$(document).keyup(function(evt) {
if (evt.keyCode == 32) {
space = false;
}
}).keydown(function(evt) {
if (evt.keyCode == 32) {
space = true;
console.log('space')
}
});
});
そして、mousemove()
ハンドラーはそれが押されているかどうかを確認できます。
キーダウンイベントを監視し、スペースバーであることを確認し、ダウンしていることを示す変数を設定し、キーアップイベントが表示されたら設定を解除する必要があります。
したがって、スペースバーが押されたことを示す変数が設定されたときに、マウスの動きを探します。
これが私の解決策です:
var allowed = true;
$(document).ready(
function () {
$(document).bind('keydown', 'space', function () {
if (!allowed) return;
allowed = false;
$('#viewport').
dragscrollable();
});
$(document).bind('keyup', 'space', function () {
allowed = true;
$('#base').off('mousedown');
return false;
});
});
jQueryおよびDragscrollableプラグインで動作します。