0

我正在做一个正交平铺地图 Java 游戏,当我的船移动到 x 和 y 边界时,按下方向键它会停止移动(如预期的那样),但是如果我继续按下键,我的角色就​​会离开屏幕。

这是我正在使用的代码:

    @Override
    public boolean keyDown(int keycode) {
            ship = world.getShip();

            switch(keycode){
                    case Keys.W:
                        if (ship.getPosition().y<28.5f){

                            ship.getVelocity().y = 1;}
                            else {
                                ship.getVelocity().y = 0;
                            }
                            break;
                    case Keys.S:
                        if (ship.getPosition().y1){
                            ship.getVelocity().y = -1;}
                        else {
                            ship.getVelocity().y = 0;
                    }
                            break;
                    case Keys.A:
                            if (ship.getPosition().x0)
                            ship.getVelocity().x = -1.5f;
                            else{
                                ship.getVelocity().x = 0;
                            }
                            break;
                    case Keys.D:
                            if (ship.getPosition().x<39){

                           ship.getVelocity().x = 1;
                            }
                            else{
                                ship.getVelocity().x = 0;
                            }
                            break;
    default:
                            break;
            }
            return true;
    }

   @Override
   public boolean keyUp(int keycode) {
           ship = world.getShip();
            switch(keycode){
                    case Keys.W:
                            if(ship.getVelocity().y == 1)
                                    ship.getVelocity().y = 0;
                            break;
                    case Keys.S:
                            if(ship.getVelocity().y == -1)
                                    ship.getVelocity().y = 0;
                            break;
                    case Keys.A:
                            if(ship.getVelocity().x == -1.5f)
                                    ship.getVelocity().x = 0;
                            break;
                    case Keys.D:
                            if(ship.getVelocity().x == 1)
                                    ship.getVelocity().x = 0;
                            break;

                    default:
                            break;
            }
            return true;
    }  

如果按键一直被按下,我应该怎么做才能让我的船保持在屏幕上?

4

1 回答 1

1

如果按键一直被按下,我应该怎么做才能让我的船保持在屏幕上?

从使用当前 API 开始。keyUp()并且keyDown()自 JDK1.1 起已被弃用

首先阅读Motion Using the Keyboard以了解有关如何处理此类事情的更多最新想法。代码示例执行基本的边界检查,以确保您不能将组件移出屏幕。

于 2013-09-26T04:20:56.427 回答