0

So i am coding a simple 2D game with javaFx. I want to use gif for walking animation, but after about 2-3 seconds it stops working. This only happens when i press the D or A button and repairs itself when i press the other button (it can be random button, not necessarily the button from W,S,A,D, which ones i am using). Anyone knows what causes it? here is code of changing the ImageView content:

main class :

public class Main extends Application{

    @Override
    public void start(Stage primaryStage) throws Exception{

        FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
        Parent root = loader.load();
        Screen screen = Screen.getPrimary();
        Rectangle2D bounds = screen.getVisualBounds();
        primaryStage.setX(bounds.getMinX());
        primaryStage.setY(bounds.getMinY());
        primaryStage.setWidth(bounds.getWidth());
        primaryStage.setHeight(bounds.getHeight());
        primaryStage.setTitle("Dogs Gang");
        Scene scene = new Scene(root, 300, 275);
        Controller head = loader.getController();
        scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent keyEvent) {
                head.getKeyControl().keyPressed(keyEvent);
            }
        });
        scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent keyEvent) {
                head.getKeyControl().keyReleased(keyEvent);
            }
        });
        scene.getStylesheets().add(getClass().getResource("sample").toExternalForm());
        primaryStage.setScene(scene);

        primaryStage.show();
    }

part of Controller class that impacts on keylistener:

public KeyControl getKeyControl(){ return this.keyControl;}

KeyControl class:

public class KeyControl {
    private Player player;

    public KeyControl(Player player){
        this.player = player;
    }

    public void keyPressed(KeyEvent e){
        player.setKeyP(e);
    }

    public void keyReleased(KeyEvent e) {
        player.setKeyR(e);
    }
}

part of Player class that impacts on Keylistener:

public void setKeyP(KeyEvent e){
        pm.setKeyP(e);
    }

    public void setKeyR(KeyEvent e){
      pm.setKeyR(e);
    }

*pm - PlayerMovement class

part of playerMovement class that impacts on Keylistener:

public void setKeyP(KeyEvent e){
        switch (e.getCode()) {
            case W: jump(); break;
            case S: pressedS = true; break;
            case A: pressedA  = true; 
                    player.setImage(new Image("sample/Images/player-move-left.gif"));break;
            case D: pressedD  = true; 
                    player.setImage(new Image("sample/Images/player-move-right.gif"));break;
        }
    }

    public void setKeyR(KeyEvent e){

        switch (e.getCode()) {
            case S: pressedS = false; break;
            case A: if(pressedA)player.setImage(new Image("sample/Images/player.png"));
                    pressedA  = false; break;
            case D: if(pressedD)player.setImage(new Image("sample/Images/player.png"));
                    pressedD  = false; break;
        }
    }

*Player class is class that extends the ImageView.

"it stopped working" means that it stops on one frame

link to whole project

Matias
  • 9
  • 4

0 Answers0