Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Horizontal Marquee Text - JavaFX
- * By Asaduzzaman Noor
- */
- package marquee;
- import java.net.URL;
- import java.util.ResourceBundle;
- import javafx.animation.Interpolator;
- import javafx.animation.TranslateTransition;
- import javafx.animation.TranslateTransitionBuilder;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.fxml.FXML;
- import javafx.fxml.Initializable;
- import javafx.scene.control.Label;
- import javafx.scene.layout.Pane;
- import javafx.scene.text.Text;
- import javafx.util.Duration;
- /**
- *
- * @author Asaduzzaman Noor
- */
- public class MainUiController implements Initializable {
- TranslateTransition transition;
- private Label label;
- @FXML
- private Pane parentPane;
- @FXML
- private Text node;
- private void rerunAnimation() {
- transition.stop();
- // if needed set different text on "node"
- recalculateTransition();
- transition.playFromStart();
- }
- private void recalculateTransition() {
- transition.setToX(node.getBoundsInLocal().getMaxX() * -1 - 100);
- transition.setFromX(parentPane.widthProperty().get() + 100);
- double distance = parentPane.widthProperty().get() + 2 * node.getBoundsInLocal().getMaxX();
- transition.setDuration(new Duration(distance / 0.05));
- }
- @Override
- public void initialize(URL url, ResourceBundle rb) {
- transition = TranslateTransitionBuilder.create()
- .duration(new Duration(10))
- .node(node)
- .interpolator(Interpolator.LINEAR)
- .cycleCount(1)
- .build();
- transition.setOnFinished(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent actionEvent) {
- rerunAnimation();
- }
- });
- rerunAnimation();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement