模拟按键事件按下时,是否按住向下箭头键?

时间:2018-10-16 20:25:52

标签: javascript google-chrome events

我正在用一个简单的JS脚本击败Chrome dino游戏,这是一个非常基本的挑战。您可以在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
}

我已经检查了键盘事件没有触发https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventKeyboardEvent.repeat并且不是!

1 个答案:

答案 0 :(得分:1)

然后可以尝试使用keypress而不是keydown

那为什么跳起来很好呢? 不知道您的jump是什么,但我敢打赌,jump动作不能被压下,与duck一样,您只要按下键就回避

希望有帮助