transition - javafx using translatetransition and keyevent to move image around screen -


i trying make simple tile based movement system when direction pressed translate transition played smoothly move character 1 tile over. problem running when play animation image transition fine after transition completes, image jumps spot further intended. if take out portion of code onfinished animation plays pressing directions after cause image move previous place not current location.

here code

import javafx.animation.translatetransition; import javafx.application.application; import javafx.scene.group; import javafx.scene.scene; import javafx.scene.image.image; import javafx.scene.image.imageview; import javafx.scene.paint.color; import javafx.stage.stage; import javafx.util.duration;   public class controltranslateimage extends application {        final int step_size = 64;     final duration duration = duration.millis(500);     group player;      public static void main(string[] args)     {         launch(args);     }      @override     public void start(stage stage)     {         final imageview image0 = new imageview(new image("http://opengameart.org/sites/default/files/styles/medium/public/slime_idle.gif"));           player = new group(image0);         player.getchildren().setall(image0);          final scene scene = new scene(player, 900, 600, color.white);          moveonkeypressed(scene, player);          stage.setscene(scene);         stage.show();     }      private void moveonkeypressed(scene scene, group player)     {          final translatetransition transition = new translatetransition(duration, player);          scene.setonkeypressed(e -> {             switch(e.getcode())             {                  case up:                 {                      transition.setfromx(player.getlayoutx());                     transition.setfromy(player.getlayouty());                     transition.settox(player.getlayoutx());                     transition.settoy(player.getlayouty() - step_size);                     transition.playfromstart();                     transition.setonfinished(t -> {                         player.setlayoutx(player.getlayoutx());                         player.setlayouty(player.getlayouty() - step_size);                     });                  } break;                 case down:                 {                      transition.setfromx(player.getlayoutx());                     transition.setfromy(player.getlayouty());                     transition.settox(player.getlayoutx());                     transition.settoy(player.getlayouty() + step_size);                     transition.playfromstart();                      transition.setonfinished(t -> {                         player.setlayoutx(player.getlayoutx());                         player.setlayouty(player.getlayouty() + step_size);                     });                  } break;                 case left:                 {                      transition.setfromx(player.getlayoutx());                     transition.setfromy(player.getlayouty());                     transition.settox(player.getlayoutx() - step_size);                     transition.settoy(player.getlayouty());                     transition.playfromstart();                      transition.setonfinished(t -> {                         player.setlayoutx(player.getlayoutx() - step_size);                         player.setlayouty(player.getlayouty());                     });                     player.setlayoutx(player.getlayoutx() - step_size);                     player.setlayouty(player.getlayouty());                   } break;                 case right:                 {                      transition.setfromx(player.getlayoutx());                     transition.setfromy(player.getlayouty());                     transition.settox(player.getlayoutx() + step_size);                     transition.settoy(player.getlayouty());                     transition.playfromstart();                      transition.setonfinished(t -> {                         player.setlayoutx(player.getlayoutx() + step_size);                         player.setlayouty(player.getlayouty());                     });                 } break;                  default:break;              }         });     } } 

fixed code

import javafx.animation.translatetransition; import javafx.application.application; import javafx.scene.group; import javafx.scene.scene; import javafx.scene.image.image; import javafx.scene.image.imageview; import javafx.scene.paint.color; import javafx.stage.stage; import javafx.util.duration;   public class controltranslateimage extends application {        final int step_size = 64;     final duration duration = duration.millis(500);     group player;      public static void main(string[] args)     {         launch(args);     }      @override     public void start(stage stage)     {         final imageview image0 = new imageview(new image("http://opengameart.org/sites/default/files/styles/medium/public/slime_idle.gif"));          player = new group(image0);          final scene scene = new scene(player, 900, 600, color.white);          moveonkeypressed(scene, player);          stage.setscene(scene);         stage.show();     }      private void moveonkeypressed(scene scene, group player)     {          final translatetransition transition = new translatetransition(duration, player);         scene.setonkeypressed(e -> {             switch(e.getcode())             {                  case up:                 {                      transition.setfromx(player.gettranslatex());                     transition.setfromy(player.gettranslatey());                     transition.settox(player.gettranslatex());                     transition.settoy(player.gettranslatey() - step_size);                     transition.playfromstart();                  } break;                 case down:                 {                      transition.setfromx(player.gettranslatex());                     transition.setfromy(player.gettranslatey());                     transition.settox(player.gettranslatex());                     transition.settoy(player.gettranslatey() + step_size);                     transition.playfromstart();                  } break;                 case left:                 {                      transition.setfromx(player.gettranslatex());                     transition.setfromy(player.gettranslatey());                     transition.settox(player.gettranslatex() - step_size);                     transition.settoy(player.gettranslatey());                     transition.playfromstart();                  } break;                 case right:                 {                      transition.setfromx(player.gettranslatex());                     transition.setfromy(player.gettranslatey());                     transition.settox(player.gettranslatex() + step_size);                     transition.settoy(player.gettranslatey());                     transition.playfromstart();                  } break;                  default:break;              }         });     } } 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -