html鼠标穿过时,左鼠标停止并在Chrome上移动时,Html画布滞后

博主在Chrome浏览器中遇到一个问题,即在按住鼠标左键移动时,游戏出现明显滞后,而使用鼠标中键或右键则没有此问题。已尝试阻止默认行为以解决,但未成功。问题只在Chrome中复现,Firefox表现正常。通过录制视频,发现中键和右键行为类似但无滞后。在www.vertix.io可以测试该问题,但并非所有用户都能重现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我创建了一个画布,我已经添加了鼠标事件:

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上测试了这个 . 似乎我只能在chrome上重新创建问题 . 使用鼠标中键或右键在游戏中具有相同的行为并且不会导致延迟 . 仅当使用鼠标左键导致滞后时 .

我四处寻找答案,发现我应该像这样阻止默认行为:

e.preventDefault();

但这并没有解决问题 . 我还尝试在屏幕上更新代表鼠标位置的数字 . 它正常更新 . 只有游戏本身就滞后了 . 可能是按下左键时从不调用onMouseMoved?但是为什么用中键和右键调用呢?

问题应该是我在move方法中调用的代码,因为当我没有按住左键时它工作正常,并且它在firefox上运行良好 . 必须有其他事情发生 .

编辑:我决定在chrome上录制,看看发生了什么 . 结果如下:

66e4e73c-f5d6-4784-a02c-9aad1e0d140d.png

有什么奇怪的,当我按下鼠标中键或右键时,游戏也会做同样的事情,但它根本没有延迟 . 你在做什么铬?

编辑:在这里测试:www.vertix.io注意,不是每个人似乎都能重现这个问题 .

感谢您的时间 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值