我试图使用箭头键在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);
}
}
答案 0 :(得分:1)
在评论中已经提到修复后,制作英雄 一个简单的Pane而不是StackPane。
public class hero extends Pane {
StackPane是一个布局窗格,它会不断地与你的英雄的手动放置战斗。