Нужна модификация для вызова removeEventListener - PullRequest
0 голосов
/ 06 марта 2019

Итак, я делаю клон тетриса, и у меня есть эта функция, которая устанавливает прослушиватели событий для всех элементов при вызове 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 Я немного новичок в программировании, поэтому у меня нет большого опыта, так что спасибо, ДЕЙСТВИТЕЛЬНО!

...