Одновременный запуск Keyup и Keydown

#javascript #jquery

#javascript #jquery

Вопрос:

Я пытаюсь запустить split(); , freeze(); и freeze2(); когда я нажимаю клавишу x . Когда я впервые нажимаю клавишу X, split(); и freeze(); работает. Но затем, когда я повторяю попытку, freeze(); работает только. Есть ли способ одновременной работы со всеми тремя функциями с помощью одной клавиши?

Вам нужно будет увидеть мой скрипт, чтобы понять:

 (function() {
        var speed = 25;

        function split() {
            $("body").trigger($.Event("keydown", {
                keyCode: 32
            }));
        }

        function split2() {
            $("body").trigger($.Event("keyup", {
                keyCode: 32
            }));
        }

        function freeze() {
            $("body").trigger($.Event("keyup", {
                keyCode: 70
            }));
        }

        function freeze2() {
            $("body").trigger($.Event("keydown", {
                keyCode: 70
            }));
        }
        var addEvent = document.addEventListener ? function(target, type, action) {
            if(target) {
                target.addEventListener(type, action, false);
            }
        } : function(target, type, action) {
            if(target) {
                target.attachEvent('on'   type, action, false);
            }
        }
        addEvent(document, 'keydown', function(e) {
            e = e || window.event;
            var key = e.which || e.keyCode;
            if(key === 88) {
                split();
                setTimeout(speed);
                freeze();
                setTimeout(speed * 2);
                freeze2();
            }
        });
  

Комментарии:

1. setTimeout() Вызовы ничего не делают. Если вы хотите отложить выполнение функций, вы должны передать их в качестве первого параметра, а delay — в качестве второго. Пример: setTimeout(freeze, speed)

2. Да, но когда я это делаю, работают только split(); и freeze();

3. Кроме того, он не работает во второй раз, когда я нажимаю X