Имитация нажатия клавиши события, удерживает нажатой стрелку вниз? - PullRequest
0 голосов
/ 16 октября 2018

Я делаю довольно простую задачу - побить игру Chrome Dino простым JS-скриптом.Вы можете найти его либо в chrome: // dino / или https://chromedino.com/ Моя диспетчеризация событий прыжка / кактуса работает нормально, но моя "утка" удерживает и не просто нажимает, и я понятия не имею, как отлаживать /выясните, почему его удерживают, а не просто нажимают.

Любая помощь будет принята, это всего лишь небольшой простой проект, ничего серьезного

// A JS script made for the offline Chrome dino game. Accessible from either chrome://dino/ or https://chromedino.com/ 
var canvas   = document.getElementsByTagName("canvas")[0],
    ctx = canvas.getContext("2d");          // Return the drawing context of the canvas 

(function recurse(){
// Reduce the Uint8ClampedArray into a number. If it isn't zero, there's an obstacle
// This is the cactus jump
let cactus      = (ctx.getImageData(85,118,60,1).data).reduce(reducer); 
// This is the duck, when the Pterodactyl comes 
let pterodactyl = (ctx.getImageData(90,85,1,1   ).data).reduce(reducer);
if(cactus){ 
    var e = new KeyboardEvent('keydown',{'keyCode':38,'which':38});
    document.dispatchEvent(e);
    console.log(cactus)
} else if(pterodactyl){
    var e = new KeyboardEvent('keydown',{'keyCode':40,'which':40});
    document.dispatchEvent(e);
}
setTimeout(recurse, 50);
})();

function reducer(a,b){
    return a + b
}

Я проверил, что событие клавиатуры нестреляю KeyboardEvent.repeat из https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent и это не так

1 Ответ

0 голосов
/ 16 октября 2018

Тогда, возможно, попробуйте keypress вместо keydown

Так почему же прыжок в порядке?Я знаю, что у тебя за jump, но моя ставка в том, что действие jump нельзя удерживать в отличие от duck, где ты ныряешь, пока нажата клавиша

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...