Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在单击箭头按钮时更快地移动矩形?_Javascript_Html_Animation_Canvas - Fatal编程技术网

Javascript 如何在单击箭头按钮时更快地移动矩形?

Javascript 如何在单击箭头按钮时更快地移动矩形?,javascript,html,animation,canvas,Javascript,Html,Animation,Canvas,如何使矩形在单击箭头按钮时以正常速度移动,然后由于我将手指移开,它应再次以正常值移动 这是我的代码的外观,包括动画功能: 我试图增加x,y值,但它立即跳转到另一个正方形 不要让玩家以60的恒定速度移动,而是尝试以可变速度移动。即 var speed = 60; ... case 'east': gameState.playerPosition.x +=speed; break; case'west': gameState.playerPosition.x -=s

如何使矩形在单击箭头按钮时以正常速度移动,然后由于我将手指移开,它应再次以正常值移动

这是我的代码的外观,包括动画功能: 我试图增加x,y值,但它立即跳转到另一个正方形



不要让玩家以60的恒定速度移动,而是尝试以可变速度移动。即

var speed = 60;

...


case 'east':
    gameState.playerPosition.x +=speed;
    break;
case'west':
    gameState.playerPosition.x -=speed;
    break;
case'north':
    gameState.playerPosition.y -=speed;
    break;
case'south':
    gameState.playerPosition.y +=speed;

然后,不要在
keyup
上更改方向,而是在
keydown
上更改方向和速度。然后,当
keyup
事件触发时,将速度更改回正常

document.addEventListener('keydown', event => {
    speed = 120;
    if(event.key==='ArrowRight'){
        gameState.direction = "east";
    }else if(event.key==='ArrowLeft'){
       gameState.direction = "west"
    }else if(event.key === 'ArrowUp'){
       gameState.direction = "north"
    }else if(event.key === 'ArrowDown'){
       gameState.direction = "south"
    }
    console.log('Key ' + event.key + ' was pressed.'); 
});   

document.addEventListener('keyup', event => {
    speed = 60;
});

不要让玩家以60的恒定速度移动,而是尝试以可变速度移动。即

var speed = 60;

...


case 'east':
    gameState.playerPosition.x +=speed;
    break;
case'west':
    gameState.playerPosition.x -=speed;
    break;
case'north':
    gameState.playerPosition.y -=speed;
    break;
case'south':
    gameState.playerPosition.y +=speed;

然后,不要在
keyup
上更改方向,而是在
keydown
上更改方向和速度。然后,当
keyup
事件触发时,将速度更改回正常

document.addEventListener('keydown', event => {
    speed = 120;
    if(event.key==='ArrowRight'){
        gameState.direction = "east";
    }else if(event.key==='ArrowLeft'){
       gameState.direction = "west"
    }else if(event.key === 'ArrowUp'){
       gameState.direction = "north"
    }else if(event.key === 'ArrowDown'){
       gameState.direction = "south"
    }
    console.log('Key ' + event.key + ' was pressed.'); 
});   

document.addEventListener('keyup', event => {
    speed = 60;
});

thianks,但这是跳到下一个广场。我需要更快地设置它的动画,而不是增加x,y值schange frameTime变量,以便它更新得更快。正如我所描述的,您仍然希望使用keyup和keydown事件,但不是更改速度变量,而是更改帧时间。thianks但这是跳转到下一个方块。我需要更快地设置它的动画,而不是增加x,y值schange frameTime变量,以便它更新得更快。您仍然希望使用我所描述的keyup和keydown事件,但不是更改速度变量,而是更改帧时间。