在javafx中移动形状?

时间:2017-06-18 19:06:25

标签: java javafx

我试图使用箭头键在javafx中移动一个形状,但我无法使其工作。

我有一个单独的形状类,但无法显示翻译。形状甚至不会出现在构造函数中设置的右坐标处。

我真的不确定我做错了什么,并希望得到任何意见。

班级:Moon_master     公共类Moon_master扩展了Application {

    @Override
    public void start(Stage primaryStage) {
        hero p1 = new hero();

        p1.setOnKeyPressed(e -> {
            if (e.getCode() == KeyCode.UP){               
                p1.moveUp();


            } else if (e.getCode() == KeyCode.DOWN){
                p1.moveDown();

            }
        });       

        Pane root = new Pane();
        root.getChildren().add(p1);

        Scene scene = new Scene(root, 300, 250);
        primaryStage.setScene(scene);
        primaryStage.show();

        p1.requestFocus();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

课程:hero

/*
 * @author jack
 */
public class hero extends StackPane {

    Rectangle body = new Rectangle(200,125,50,50);
    double newX , newY;

    public hero () {
       getChildren().add(body);
    }

    public void moveUp(){
        newY = body.getY() - 6;
        body.setY(newX);          
    }

    public void moveDown(){
        newY = body.getY() + 6;
        body.setY(newY);
    }
}

1 个答案:

答案 0 :(得分:1)

在评论中已经提到修复后,制作英雄 一个简单的Pane而不是StackPane。

public class hero extends Pane {

StackPane是一个布局窗格,它会不断地与你的英雄的手动放置战斗。