在JavaFX中使用WASD移动项目

问题描述

我发现了这种奇怪的解决方法,但我不知道为什么它无法正常工作。这里的代码`Scene root = new Scene(layout,1000,1000);

     root.addEventHandler(KeyEvent.KEY_pressed,(KeyEvent event) -> {
        
        if (event.getCode().equals(KeyCode.W))
        {
            user.move("up");
      
        }
        if (event.getCode().equals(KeyCode.A))
        {
            user.move("left");
    
        }
        if (event.getCode().equals(KeyCode.S))
        {
            user.move("down");
 
        }
        if (event.getCode().equals(KeyCode.D))
        {
            user.move("right");
      
        }
         
    });`

这是“移动”方法。这很奇怪,请看数字:

 public void move(String direction) {

    switch (direction) {

        case "up":

            this.setCenterY(this.getCenterY() - 20);

        case "down":
            this.setCenterY(this.getCenterY() + 10);
            this.setCenterX(this.getCenterX() - 10);

        case "right":
            this.setCenterX(this.getCenterX() + 20);

        case "left":
            this.setCenterX(this.getCenterX() - 10);

    }

}

如您所见,“向下”方向也沿X轴移动,“向上”方向变为20像素而不是10像素,这是我可以使对象沿每个方向正确移动10像素的唯一方法。这是为什么?为什么在每个值中加上10会使我的对象移动得异常?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)