需要修改以调用removeEventListener

时间:2019-03-05 23:55:10

标签: javascript addeventlistener removeeventlistener

所以我正在做一个俄罗斯方块克隆,我有这个功能,可以在调用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。我对编程有点陌生,所以我没有很多经验,所以非常感谢!

0 个答案:

没有答案