Javascript 如何将游戏角色保留在画布中?

Javascript 如何将游戏角色保留在画布中?,javascript,canvas,web-applications,keyboard,Javascript,Canvas,Web Applications,Keyboard,我正在开发一个类似蛙人的游戏,下面的代码用于在画布元素周围移动我的角色。代码可以工作,但是角色可以“走出/离开”画布。我尝试将handleInput()放入嵌套在if语句中的update(dt)(更新检查更新)(if player.x is>不要这样做…)中,但我得到了一个语法错误。开关中的三元语句起作用-然而,在我遵循的教程中,他们就是这样做的,我正在努力不只是“复制”教程。任何建议都将不胜感激 window.allowedKeys = { 37: 'left', 38: 'u

我正在开发一个类似蛙人的游戏,下面的代码用于在画布元素周围移动我的角色。代码可以工作,但是角色可以“走出/离开”画布。我尝试将
handleInput()
放入嵌套在if语句中的
update(dt)
(更新检查更新)(
if player.x is>不要这样做…
)中,但我得到了一个语法错误。
开关
中的三元语句起作用-然而,在我遵循的教程中,他们就是这样做的,我正在努力不只是“复制”教程。任何建议都将不胜感激

window.allowedKeys = {
    37: 'left',
    38: 'up',
    39: 'right',
    40: 'down'
};

const allowedKeys = window.allowedKeys;

 update(dt){

    }

    handleInput(input){

        switch(input) {
            case 'left':
             allowedKeys['left'] = this.x -= 1;
                break;
            case 'up':
            allowedKeys['up'] = this.y -= 1;
                break;
            case 'right':
            allowedKeys['right'] = this.x += 1;
                break;
            case 'down':
            allowedKeys['down'] = this.y += 1;
                break;
            default:
                break;
        }
    }
document.addEventListener('keyup', function(e) {

    player.handleInput(allowedKeys[e.keyCode]);

});
将此添加到update()中修复了以下问题:)具有左/右屏幕滚动的额外好处

update(dt){
       if(player.x > 5){
           player.x = 0;
       }
       if(player.x < 0){
        player.x = 5;
    }
        if(player.y > 4.5){
            player.y -= 1;
        }
    }
更新(dt){
如果(player.x>5){
player.x=0;
}
if(player.x<0){
player.x=5;
}
如果(玩家y>4.5){
player.y-=1;
}
}

我认为您想要验证用户按下的键是什么,这里是一个示例,我使用prototype,但我相信您使用的是es6类。您不需要声明全局var allowedkey,也不需要更新它。我希望这对你有帮助

//使用javascript进行移动
常量允许密钥={
37:"左",,
38:"向上",,
39:"对",,
40:‘向下’
};
功能播放器(目标){
这是0.x=0
这个。y=0
this.target=target
}
Player.prototype.handleInput=函数(输入){
开关(输入){
案例“左”:
这个.x-=1;
打破
案例“向上”:
这个.y-=1;
打破
案例“正确”:
这个.x+=1;
打破
案例“关闭”:
这个。y+=1;
打破
违约:
打破
}
}
Player.prototype.update=函数(dt){
}
常量玩家=新玩家(“玩家1”)
文件。添加的文件列表器(“键控”,功能(e){
player.handleInput(允许键[e.keyCode]);
常量元素=document.getElementById(player.target)
element.innerHTML=“x:”+player.x+“y:”+player.y
});

按箭头
手动输入功能吗?
函数
关键字(或箭头符号)在哪里?完全忘了添加它!对不起
document.addEventListener('keyup',函数(e){player.handleInput(allowedKeys[e.keyCode]);})更新你的问题不要只是在评论中添加你缺少的代码。。。。最好是创建一个代码段。这段代码仍然不完整,现在看起来handleInput应该是一个“player”对象的方法。那在哪里。