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