上を移動:私はマウスの左ボタンを押したままにする場合Htmlのキャンバスは、私はキャンバスを作成していると私はそれにマウスイベントを追加した左マウスがダウンしているとき遅れとChrome
canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
canvas.width = screenWidth;
canvas.height = screenHeight;
...
// CALLED AT START:
function setup() {
// Mouse movement:
document.onmousemove = function(e) {
e.preventDefault();
target.x = e.pageX;
target.y = e.pageY;
angle = Math.atan2((target.y - localPlayer.getY()),
(target.x - localPlayer.getX()));
// Distance to mouse Check:
var dist = Math.sqrt((localPlayer.getX() - target.x)
* (localPlayer.getX() - target.x) + (localPlayer.getY() - target.y)
* (localPlayer.getY() - target.y));
var speedMult = dist/(canvas.height/4);
socket.emit("update", {
...
});
}
document.onmousedown = function(e) {
e.preventDefault();
}
}
は今、問題があると同時にマウスを動かすと、私のゲームはかなり遅れる。単にマウスを動かすだけでラグは発生しません。私はchromeとfirefoxでこれをテストしました。私はクロムで問題を再現することしかできないようです。マウスの中央ボタンまたは右ボタンを使用すると、ゲームで同じ動作になり、遅延が発生しません。マウスの左ボタンを使用した場合にのみ遅れが発生します。
私は答えを周りを見回したと、私はそうのようにデフォルトの動作を防ぐ必要があることを発見した:
e.preventDefault();
をしかし、それは問題を解決できませんでした。また、マウスの位置を表す数字を画面上で更新しようとしました。それは正常に更新されました。ゲーム自体は遅れていた。左ボタンが押されている間にonMouseMovedが呼び出されないことがありますか?しかし、なぜそれが中と右のボタンで呼び出されますか?
問題は、私が左キーを押していないときにうまく動作し、Firefoxでうまく動作するため、moveメソッドの中で呼び出すコードで行う必要があります。何か他のことが起こっているに違いありません。
編集:私は何が起こっているかを見るためにクロムの記録に決めました。結果は次のようになります。 中マウスボタンまたは右ボタンを押すと、ゲームは同じことをしますが、全く遅れることはありません。あなたは何をしていますか?
EDIT:ここでテストしてください:www.vertix.io誰もがこの問題を再現できないようです。
ありがとうございます。
実際に0.033秒ごとに2つの新しいイベントハンドラを割り当てていますか?どうして?また、 'draw()'はどこにありますか – Kaiido
ドキュメントの代わりに、キャンバス自体をイベント用に使用します... – Akxe
提案をいただきありがとうございます。しかし、onMoveイベントはまだ押されている間は起動されていません。 – TastyLemons