所以我正在做一个俄罗斯方块克隆,我有这个功能,可以在调用tey时为所有元素设置事件监听器。问题是我需要调用remove事件监听器,因为它们一直在堆叠,我确实以某种方式解决了这个问题,但是仍然存在着监听器处于活动状态的问题,即使不活动的元素被更改了,所以我需要调用删除eventlistener,但我不知道如何使用匿名函数进行操作,而不更改全部。其实我根本不知道该怎么做。如果有人可以帮助我,并提供一个优雅的解决方案,我将非常感激。 无论如何,这是代码:
const [space, left, up, right, down] = [32, 37, 38, 39, 40];
const setupEventListeners = function(el) {
document.addEventListener('keydown', function(event) {
if (event.keyCode === up || event.which === up) {
if (testing.collisionRotate(testing.landed, el) !== 0) {
// el.rotate();
}
} else if (event.keyCode === left || event.which === left) {
if (testing.collisionLeft(testing.landed, el) !== 0) {
el.left();
}
} else if (event.keyCode === right || event.which === right) {
if (testing.collisionRight(testing.landed, el) !== 0) {
el.right();
}
} else if (event.keyCode === down || event.which === down) {
if (testing.collisionDown(testing.landed, el) !== 0) {
el.down();
}
} else if (event.keyCode === space || event.which === space) {
}
el.draw();
});
}
// it's called like that
setupEventListeners(randTet);
感谢您的任何投入和想法。 ps。我对编程有点陌生,所以我没有很多经验,所以非常感谢!