【问题标题】:how to move the rectangle faster while clicking on the arrow-button?单击箭头按钮时如何更快地移动矩形?
【发布时间】:2019-10-22 02:15:00
【问题描述】:

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

这是我的代码的样子,包括动画功能: 我试图增加 x,y 值,但它立即跳到另一个方块


【问题讨论】:

    标签: javascript html animation canvas


    【解决方案1】:

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

    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;
    });
    

    【讨论】:

    • 想,但这是跳到下一个广场。我需要更快地对其进行动画处理,而不是增加 x,y 值
    • 更改 frameTime 变量,使其更新更快。您仍然希望使用我描述的 keyup 和 keydown 事件,但不要更改速度变量,而是更改帧时间。
    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多