2017-08-12 12 views
0

画像のx、y位置を定義できるように、javascriptでカーソルにアクセスする方法はありますか? 私はcssのカーソル用にカスタムのdata-uriを設定しました。全体を再定義することなく動的にオフセットを調整できるようにしたいと考えています。javascriptでカーソルの原点を動的に変更しますか?

body{ 
    cursor: url('data:image/svg+xml;utf8,<svg fill="none" stroke="black" stroke-width="1" height="48" viewBox="0 0 24 24" width="48" xmlns="http://www.w3.org/2000/svg"><path d="M 0 0 H 6 L 12 12 V 18"/></svg>') 24 24, auto; 
} 

どうやってx、yをjavascriptで動的に設定するのですか?

+0

あなたの目標は正確には何ですか? –

+0

目標は、マウスポジションに基づいてオフセットを調整することですが、mousemoveイベントレイテンシのために遅れたポジションに基づいていることに気付きました。オフセットしても、必要なものは達成できません。 – user3591153

+0

私は基本的に、目に見えないグリッドにカーソルを合わせたいと思っていました。 – user3591153

答えて

0

あなたがポインタロックを見たいと思っている場合は、ここではjQueryフリー実装です。

var getPointerLock =() => { 
    if (document.body.mozRequestPointerLock) { 
    document.body.mozRequestPointerLock(); 
    } else if (document.body.requestPointerLock) { 
    document.body.requestPointerLock(); 
    } 
}; 

var x = 0; 
var y = 0; 

document.body.onclick = (evt) => { 
    getPointerLock(); 
    x = evt.clientX; 
    y = evt.clientY; 
}; 

document.body.onmousemove = (evt) => { 
    if (document.pointerLockElement || document.mozPointerLockElement) { 
    x += evt.movementX; 
    y += evt.movementY; 
    document.body.innerHTML = `${x}, ${y}`; 
    } 
}; 
html { 
    height: 100%; 
} 

body { 
    height: 100%; 
} 
+0

これはmousemoveと同じレイテンシーの問題はありますか? – user3591153

+0

ああ、いくつかのテストをした、それは同じレイテンシを持っています。なぜ私はcssカーソルを使用していた理由は、視覚的な待ち時間がないからです。 – user3591153

+0

実際のマウスはポインタがロックされているときに消費されるため、実際のマウスの位置が再描画されないため、通常のユーザーは待ち時間に気づくことはありません。新しいカーソル位置を計算したら、カーソルを再描画するのはあなた次第です。 –

関連する問題