JavaFX: Moving image with arrow keys and spacebar

21,805

You have to add keyListener to your scene

private EventHandler<KeyEvent> keyListener = new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent event) {
        if(event.getCode() == KeyCode.UP || event.getCode() == KeyCode.DOWN ||
        event.getCode() == KeyCode.RIGHT || event.getCode() == KeyCode.LEFT) {
            //your code for moving the ship
        } 
        else if(event.getCode() == KeyCode.SPACE) {
            //your code for shooting the missile
        }
        event.consume();
    }
};
Share:
21,805
Admin
Author by

Admin

Updated on July 09, 2022

Comments

  • Admin
    Admin almost 2 years

    I'm trying to make a little game like Space Invaders. I'm using JavaFX with Netbeans 6.9 and couldn't find an answer elsewhere, so I thought I'ld just ask here.

    I have an image of a space ship, which I would like to move using my arrow keys. When I press spacebar it should shoot a missile. The missile can destroy a meteorite.

    Here's my current code:

    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.paint.Color;
    import javafx.scene.image.ImageView;
    import javafx.scene.image.Image;
    import javafx.animation.Timeline;
    import javafx.animation.Interpolator;
    
    var x: Number;
    Timeline {
        repeatCount: Timeline.INDEFINITE
        autoReverse: true
        keyFrames: [
        at (0s) {x => 500.0},
        at (10s) {x => -100.0 tween Interpolator.LINEAR}
        ]
    }.play();
    
    Stage {
    title: "Shoot"
    scene: Scene {
        fill: Color.BLACK
        width: 800
        height: 500
        content: [
            ImageView {
                x: 500 y: 25
                image: Image {
                    url: "{__DIR__}earth.jpg";
                }
            }
            ImageView {
                translateX: bind x
                x: 150 y: 300
                image: Image {
                    url: "{__DIR__}meteorite.png";
                }
            }
            ImageView {
                x: 400 y: 450
                image: Image {
                    url: "{__DIR__}spaceship.png";
                }
            }
        ]
    }
    }
    

    Thanks in advance.