2017-01-25 13 views
1

Итак, в основном я импортирую изображение автомобиля и пытаюсь сделать движение автомобиля сигналом вверх, вниз, влево, вправо с помощью клавиши со стрелками. Поскольку JavaFX используется менее по сравнению с swing и awt, ресурсов очень мало, что я могу найти в Интернете. Я начинаю и стараюсь, но смущен, глядя на документы.Как сделать перемещение изображения с помощью стрелок JavaFX

Так вот что я сделал:

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); 
    } 

} 

В настоящее время я выяснить правильный синтаксис в JavaFX для обработки нажатия клавиши, и я был бы признателен за любую помощь.

+0

"_Since JavaFX очень новый ..._" Хороший. – csmckelvey

+0

@takendarkk Я не знаю конкретной даты запуска, но я знаю, что он начинает заменять swing и awt для графического интерфейса. я должен изменить свои формулировки, если это вас беспокоит? –

+2

Первая версия была выпущена в 2008 году - последняя версия была выпущена почти 3 года :) – csmckelvey

ответ

4

Просто измените 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); 
    } 
    } 
}); 

Вы также можете быть заинтересованы в JavaFX Detect mutliple keyboard keys pressed simultaneously

+0

Благодарим вас за код стартера, это очень близко к тому, что я ищу. –

1

Вы могли бы попробовать это ->

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 
});