Ok, well maybe its slightly more complicated than that, but not much. Things such as animations which were do-able with Swing, but were so painful, are baked into the JavaFX API and are relatively straightforward to implement.
In last month’s blog post, I demoed a JavaFX application which had 2 logos slowly scrolling across the app’s background. The code which was needed in order to acheive this effect was suprisingly minimal. The relevant code snippet from the application’s controller class is below.
public class AppController {
@FXML
protected ImageView logoImage;
@FXML
protected AnchorPane rootPane;
public void animateLogo() {
TranslateTransition tt =
new TranslateTransition(Duration.seconds(30), logoImage);
tt.setFromX( -(logoImage.getFitWidth()) );
tt.setToX( rootPane.getPrefWidth() );
tt.setCycleCount( Timeline.INDEFINITE );
tt.play();
}
}
In the snippet above, we use a TranslationTransition which will move a node along a specified path over a specified time interval. The easiest way to do this is to give it the start point, end point, and the amount of time to run the animation for.
The TranslationTransition is created with a duration of 30 seconds, using the logoImage ImageView object that was injected by JavaFX into this controller class. Next, the starting point is set by specifying the fromX value on the transition. In this case, we want the animation to start the logo just off of the screen, so we specify a negative X value that is the width of the logo node. The toX value is set to the width of the entire UI so that the logo will scroll completely off the screen.
Finally, before playing the animation, the cycle count is set to INDEFINITE which means that as soon as the logo animation is complete, it will be automatically started again from the beginning, and keep doing so indefinitely.
That’s it, other transitions are equally as easy such as fading and scaling. Animations can also be chained together to run in sequence or set up to be run in parallel with other transitions.
Once again, from last month’s post, here’s a video showing animations in action. In particular, there are 2 logos which are animated on the Scene’s background that are scrolling in opposite directions across the screen.
Have fun!
twitter: @RobTerpilowski
Written with StackEdit.
Pingback: JavaFX links of the week, September 8 // JavaFX News, Demos and Insight // FX Experience