禁用javascript中的键盘
我想知道如何在分数等于5后使键盘失效。其他一切我都很好。我已经完成了所有我需要完成的事情,我只是在键盘上有问题,如果我能在这方面得到一些帮助,我将不胜感激。这让我很难过,所以我想我会得到一些帮助禁用javascript中的键盘,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,我想知道如何在分数等于5后使键盘失效。其他一切我都很好。我已经完成了所有我需要完成的事情,我只是在键盘上有问题,如果我能在这方面得到一些帮助,我将不胜感激。这让我很难过,所以我想我会得到一些帮助 //Arrow key codes var UP = 38; var DOWN = 40; var RIGHT = 39; var LEFT = 37; //Directions var moveUp = false; var moveDown = false; var moveRight
//Arrow key codes
var UP = 38;
var DOWN = 40;
var RIGHT = 39;
var LEFT = 37;
//Directions
var moveUp = false;
var moveDown = false;
var moveRight = false;
var moveLeft = false;
//Add keyboard listeners
window.addEventListener("keydown", function(event)
{
switch(event.keyCode)
{
case UP:
moveUp = true;
break;
case DOWN:
moveDown = true;
break;
case LEFT:
moveLeft = true;
break;
case RIGHT:
moveRight = true;
break;
}
}, false);
window.addEventListener("keyup", function(event)
{
switch(event.keyCode)
{
case UP:
moveUp = false;
break;
case DOWN:
moveDown = false;
break;
case LEFT:
moveLeft = false;
break;
case RIGHT:
moveRight = false;
break;
}
}, false);
function loadHandler()
{
update();
}
function update()
{
//The animation loop
requestAnimationFrame(update, canvas);
//Up
if(moveUp && !moveDown)
{
cat.vy = -5;
}
//Down
if(moveDown && !moveUp)
{
cat.vy = 5;
}
//Left
if(moveLeft && !moveRight)
{
cat.vx = -5;
}
//Right
if(moveRight && !moveLeft)
{
cat.vx = 5;
}
//Set the cat's velocity to zero if none of the keys are being pressed
if(!moveUp && !moveDown)
{
cat.vy = 0;
}
if(!moveLeft && !moveRight)
{
cat.vx = 0;
}
//Move the cat
cat.x += cat.vx;
cat.y += cat.vy;
//Check for a collision between the cat and the monster
//and change the monster's score when they collide
if(hitTestRectangle(cat, monster) && score < 5)
{
if(!collisionHasOccured)
{
score++;
collisionHasOccured = true;
}
}
else
{
collisionHasOccured = false;
}
if(score === 5)
{
message = " - Game Over!";
}
//Render the sprites
render();
}
function hitTestRectangle(r1, r2)
{
//A variable to determine whether there's a collision
var hit = false;
//Calculate the distance vector
var vx = r1.centerX() - r2.centerX();
var vy = r1.centerY() - r2.centerY();
//Figure out the combined half-widths and half-heights
var combinedHalfWidths = r1.halfWidth() + r2.halfWidth();
var combinedHalfHeights = r1.halfHeight() + r2.halfHeight();
//Check for a collision on the x axis
if(Math.abs(vx) < combinedHalfWidths)
{
//A collision might be occuring.
//Check for a collision on the y axis
if(Math.abs(vy) < combinedHalfHeights)
{
//There's definitely a collision happening
hit = true;
}
else
{
//There's no collision on the y axis
hit = false;
}
}
else
{
//There's no collision on the x axis
hit = false;
}
return hit;
}
function render(event)
{
drawingSurface.clearRect(0, 0, canvas.width, canvas.height);
if(sprites.length !== 0)
{
for(var i = 0; i < sprites.length; i++)
{
var sprite = sprites[i];
drawingSurface.drawImage
(
image,
sprite.sourceX, sprite.sourceY,
sprite.sourceWidth, sprite.sourceHeight,
Math.floor(sprite.x), Math.floor(sprite.y),
sprite.width, sprite.height
);
}
}
drawingSurface.fillText(score + message, monster.x, monster.y - 40);
}
</script>
//箭头键代码
var-UP=38;
var-DOWN=40;
var右=39;
左var=37;
//方向
var moveUp=false;
var-moveDown=false;
var moveRight=false;
var moveLeft=false;
//添加键盘侦听器
window.addEventListener(“按键向下”,函数(事件)
{
开关(event.keyCode)
{
个案:
moveUp=true;
打破
按大小写:
moveDown=true;
打破
案例左:
moveLeft=true;
打破
案例权利:
moveRight=true;
打破
}
},假);
window.addEventListener(“键控”,函数(事件)
{
开关(event.keyCode)
{
个案:
moveUp=false;
打破
按大小写:
moveDown=false;
打破
案例左:
moveLeft=false;
打破
案例权利:
moveRight=false;
打破
}
},假);
函数loadHandler()
{
更新();
}
函数更新()
{
//动画循环
requestAnimationFrame(更新,画布);
//向上
如果(上移和下移)
{
cat.vy=-5;
}
//向下
如果(向下移动和向上移动)
{
cat.vy=5;
}
//左
if(左移和右移)
{
cat.vx=-5;
}
//对
if(moveRight&!moveLeft)
{
cat.vx=5;
}
//如果没有按下任何键,则将cat速度设置为零
如果(!moveUp&&!moveDown)
{
cat.vy=0;
}
如果(!moveLeft&!moveRight)
{
cat.vx=0;
}
//移动猫
cat.x+=cat.vx;
y类+=vy类;
//检查猫和怪物之间是否发生碰撞
//当它们碰撞时,改变怪物的分数
如果(命中矩形(猫、怪物)&&score<5)
{
如果(!发生碰撞)
{
分数++;
CollisionHasOccursed=true;
}
}
其他的
{
CollisionHasOccursed=false;
}
如果(分数=5)
{
message=“-游戏结束!”;
}
//渲染精灵
render();
}
函数hitTestRectangle(r1,r2)
{
//用于确定是否存在冲突的变量
var-hit=false;
//计算距离向量
var vx=r1.centerX()-r2.centerX();
变量vy=r1.centerY()-r2.centerY();
//计算出组合的半宽半高
var combinedHalfWidths=r1.halfWidth()+r2.halfWidth();
var combinedHalfHeights=r1.HalfHeights()+r2.HalfHeights();
//检查x轴上是否存在碰撞
if(数学abs(vx)<组合半宽度)
{
//可能发生碰撞。
//检查y轴上是否存在碰撞
if(数学绝对值(vy)<组合半高)
{
//肯定发生了碰撞
命中=真;
}
其他的
{
//y轴上没有碰撞
命中=错误;
}
}
其他的
{
//x轴上没有碰撞
命中=错误;
}
回击;
}
函数渲染(事件)
{
drawingSurface.clearRect(0,0,canvas.width,canvas.height);
如果(sprites.length!==0)
{
对于(变量i=0;i
您只需要向事件侦听器添加一个if
语句。(如果分数=5)那么什么都不要做。您可以将代码放在开关
语句的正上方。编辑 @JasonEnts:
window.addEventListener("keydown", function(event)
{ if (score < 5) {
switch(event.keyCode)
{
case UP:
moveUp = true;
break;
case DOWN:
moveDown = true;
break;
case LEFT:
moveLeft = true;
break;
case RIGHT:
moveRight = true;
break;
}
}
}, false);
window.addEventListener(“按键按下”),函数(事件)
{如果(分数<5){
开关(event.keyCode)
{
个案:
moveUp=true;
打破
按大小写:
moveDown=true;
打破
案例左:
moveLeft=true;
打破
案例权利:
moveRight=true;
打破
}
}
},假);
你能分享更多关于HTML的信息吗?你到底想解决什么问题?阅读这个答案,希望它能帮助你。像这样?如果(score==5){window.addEventListener(“keydown”,function(event)(true)}那么,它工作了吗?