Если функция не запускается после логического изменения? - PullRequest
0 голосов
/ 08 января 2020

У меня есть система, в которой после нажатия определенной клавиши логическое значение меняется на true, и программа должна вызывать if l oop. Однако после нажатия клавиши программа блокируется и перестает отвечать на запросы. (Программа должна автоматически перемещать весло, и все это должно быть в состоянии отключить, но кажется, что оно просто не активируется. Вот код, вызывающий беспокойство :

var aienable = false;
$(document).keydown(function(keyPressed){
    if (keyPressed.keyCode == 192 && aienable == false){
        aienable = true;
    }
});
if (aienable == true){
    var AIdrive = setInterval(function(){
        $(document).keydown(function(keyPressed){
            if (keyPressed.keyCode == 192 && aienable == true){
                aienable = false;
            }
        });
        if (aienable == false){
            clearInterval(AIdrive);
        }
    },1000);
}

Примечание: используется ключ `

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Вам нужно будет поместить логический код условия в функцию и вызвать его из обработчика нажатия клавиш. переменная имеет значение true после нажатия клавиши, но код не уведомляется об этом, поскольку она уже была запущена.

0 голосов
/ 08 января 2020

В Ваш код

if (aienable == true){

выполняется один раз , сразу после

var aienable = false;

И условие всегда ложно. Изменение значения из aienable выполняется при нажатии клавиши .

Вторичный if должен быть внутри обработчика событий нажатия клавиш сразу после первого if

...