如何使用JavaFX使图像移动
所以基本上,我导入了一个汽车的图像,并试图通过使用箭头键向上、向下、向左、向右发送信号来让汽车移动。由于JavaFX与swing和awt相比使用较少,所以我在internet上能找到的资源很少。我是初学者,尝试过,但在看文档时感到困惑 以下是我所做的:如何使用JavaFX使图像移动,java,javafx,keypress,eventhandler,Java,Javafx,Keypress,Eventhandler,所以基本上,我导入了一个汽车的图像,并试图通过使用箭头键向上、向下、向左、向右发送信号来让汽车移动。由于JavaFX与swing和awt相比使用较少,所以我在internet上能找到的资源很少。我是初学者,尝试过,但在看文档时感到困惑 以下是我所做的: public class Car extends Application{ private int xcoor = 0; private int ycoor = 0; private int velx = 0; private
public class Car extends Application{
private int xcoor = 0;
private int ycoor = 0;
private int velx = 0;
private int vely = 0;
@Override
public void start(Stage primaryStage) throws Exception{
Pane pane = new Pane();
Image carImage = new Image("car.png");
ImageView cImage = new ImageView(carImage);
cImage.setFitWidth(120);
cImage.setFitHeight(80);
pane.getChildren().addAll(cImage);
Scene scene = new Scene(pane, 800, 500);
scene.setOnKeyPressed(new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event){
//How to make the car move with arrow?
}
});
primaryStage.setTitle("Car");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
公车扩展应用{
私有int xcoor=0;
私有int ycoor=0;
私有int velx=0;
私有整数=0;
@凌驾
public void start(Stage primaryStage)引发异常{
窗格=新窗格();
Image carImage=新图像(“car.png”);
ImageView cImage=新的ImageView(carImage);
cImage.setFitWidth(120);
cImage.安装高度(80);
pane.getChildren().addAll(cImage);
场景=新场景(窗格,800500);
scene.setOnKeyPressed(新的EventHandler(){
@凌驾
公共无效句柄(KeyEvent事件){
//如何使汽车用箭头移动?
}
});
初级阶段。片名(“汽车”);
初级阶段。场景(场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
目前,我正在研究javaFX中处理按键的正确语法,如果有任何帮助,我将不胜感激。您可以试试这个->
scene.setOnKeyPressed(e->{
if(e.getCode()==KeyCode.RIGHT){
//change the value of x and y appropriately
cImage.setLayoutX(x);
cImage.setLayoutY(y)
}
//check for other arrow keys
});
你可以试试这个->
scene.setOnKeyPressed(e->{
if(e.getCode()==KeyCode.RIGHT){
//change the value of x and y appropriately
cImage.setLayoutX(x);
cImage.setLayoutY(y)
}
//check for other arrow keys
});
只需更改
layoutX
属性
scene.setOnKeyPressed(new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event){
if (event.getCode() == KeyCode.RIGHT) {
cImage.setLayoutX(cImage.getLayoutX() + 10);
} else if (event.getCode() == KeyCode.LEFT) {
cImage.setLayoutX(cImage.getLayoutX() - 10);
}
}
});
scene.setOnKeyPressed(新的EventHandler(){
@凌驾
公共无效句柄(KeyEvent事件){
if(event.getCode()==KeyCode.RIGHT){
cImage.setLayoutX(cImage.getLayoutX()+10);
}else if(event.getCode()==KeyCode.LEFT){
cImage.setLayoutX(cImage.getLayoutX()-10);
}
}
});
您可能还对感兴趣,只需更改
layoutX
属性即可
scene.setOnKeyPressed(new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event){
if (event.getCode() == KeyCode.RIGHT) {
cImage.setLayoutX(cImage.getLayoutX() + 10);
} else if (event.getCode() == KeyCode.LEFT) {
cImage.setLayoutX(cImage.getLayoutX() - 10);
}
}
});
scene.setOnKeyPressed(新的EventHandler(){
@凌驾
公共无效句柄(KeyEvent事件){
if(event.getCode()==KeyCode.RIGHT){
cImage.setLayoutX(cImage.getLayoutX()+10);
}else if(event.getCode()==KeyCode.LEFT){
cImage.setLayoutX(cImage.getLayoutX()-10);
}
}
});
您可能还对“因为JavaFX非常新…”感兴趣。@takendark我不知道具体的发布日期,但我知道它正在开始取代swing和awt for GUI。如果你觉得不舒服,我应该改变我的措辞吗?第一个版本是在2008年发布的-最新版本已经发布了近3年:)我明白了。。感谢您提供的信息,顺便说一句@takendarkkDon不要将空格键与“同时按下的多个键盘键”分开。我最近玩过这个概念,花了三天时间才发现一些键盘制造商在使用空格键时很懒惰。“因为JavaFX非常新…”不错。@Takendark我不知道具体的发布日期,但我知道它正开始取代GUI的swing和awt。如果你觉得不舒服,我应该改变我的措辞吗?第一个版本是在2008年发布的-最新版本已经发布了近3年:)我明白了。。感谢您提供的信息,顺便说一句@takendarkkDon不要将空格键与“同时按下的多个键盘键”分开。我最近玩过这个概念,花了三天时间才发现一些键盘制造商在空格键方面很懒惰。谢谢你的入门代码,这与我要找的非常接近。谢谢你的入门代码,这与我要找的非常接近。