2017-04-11 2 views
0

Je suis un débutant en codage qui essaie de faire un jeu simple en utilisant javafx. En ce moment, j'essaye d'obtenir un rectangle qui tombe à l'écran à une vitesse constante. J'ai essayé d'utiliser getLayoutY() qui a fonctionné dans une méthode EventHandler où j'ai dû appuyer sur une flèche, mais je veux que l'objet tombe/se déplace sans l'intervention de l'utilisateur. Les ressources que je recherche principalement impliquent l'animation sprite qui est un peu trop compliqué pour moi de comprendre. Ce est le rectangle:Comment faire tomber/déplacer un objet à vitesse constante dans javafx?

Rectangle rect2 = new Rectangle();     
    rect2.setX(500); 
    rect2.setY(500); 
    rect2.setWidth(100); 
    rect2.setHeight(100); 
    rect2.setFill(Color.BLUE); 
    scene.getChildren().addAll(rect2); 

Ce code ne fonctionnait que dans un scene.setOnKeyPressed() ... méthode

rect2.setLayoutY(rect2.getLayoutY() + 10); 
+1

Lire sur [l'API d'animation] (http://docs.oracle.com/javase/8/jav afx/visual-effects-tutorial/animations.htm # JFXTE149), en particulier ['TranslateTransition'] (http://docs.oracle.com/javase/8/javafx/api/javafx/animation/TranslateTransition.html). Pour des techniques d'animation (beaucoup plus) avancées, voir http://svanimpe.be/blog/game-loops-fx.html (qui se base sur http://svanimpe.be/blog/game-loops.html). –

Répondre

0

Je pense que les transitions est ce que vous avez besoin: http://docs.oracle.com/javafx/2/animations/basics.htm

I votre cas (non testé):

Rectangle rect2 = new Rectangle();     
rect2.setX(500); 
rect2.setY(500); 
rect2.setWidth(100); 
rect2.setHeight(100); 
rect2.setFill(Color.BLUE); 
scene.getChildren().addAll(rect2); 
Path path = new Path(); 
path.getElements().add (new MoveTo (0, 0)); 
path.getElements().add (new LineTo(0, 100)); 

PathTransition pathTransition = new PathTransition(); 
pathTransition.setDuration(Duration.millis(10000)); 
pathTransition.setNode(cbTypeCrc); 
pathTransition.setPath(path); 
pathTransition.setOrientation(OrientationType.NONE); 
pathTransition.setAutoReverse(true); 
pathTransition.play(); 
+0

C'est probablement plus facile avec un 'TranslateTransition', puisque le chemin est juste une ligne droite. Pour référence, une version plus à jour de la documentation que vous avez liée est à http://docs.oracle.com/javase/8/javafx/visual-effects-tutorial/animations.htm#JFXTE149 –