2017-01-25 1 views
1

Donc, fondamentalement, j'importe une image d'une voiture et j'essaie de faire bouger la voiture en me signalant vers le haut, le bas, la gauche ou la droite en utilisant les flèches. Comme JavaFX est moins utilisé comparé à swing et awt, il y a très peu de ressources que je puisse trouver sur internet. Je suis débutant et j'ai essayé mais confus en regardant les docs.Comment faire bouger l'image en utilisant les flèches JavaFX

Voici donc ce que je l'ai fait:

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

} 

Actuellement, je suis la syntaxe Figuring appropriée dans JavaFX pour gérer la pression de touche, et je vous serais reconnaissant de toute aide.

+0

"_Depuis JavaFX est très nouveau ..._" Joli. – csmckelvey

+0

@takendarkk Je ne connais pas la date de lancement spécifique mais je sais qu'il commence à remplacer swing et awt pour GUI. devrais-je changer mes formulations si cela vous dérange? –

+2

La première version a été publiée en 2008 - la dernière version est sortie depuis presque 3 ans :) – csmckelvey

Répondre

4

il suffit de changer la propriété 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); 
    } 
    } 
}); 

Vous pourriez également être intéressé par JavaFX Detect mutliple keyboard keys pressed simultaneously

+0

Merci pour le code de départ, c'est très proche de ce que je cherche. –

1

Vous pouvez essayer cela ->

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