JavaFX RadialGradient create a ball

Description

JavaFX RadialGradient create a ball

import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.RadialGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Main extends Application {

   static Stage myDialog;
   static int dx = 1;
   static int dy = 1;

   public static void main(String[] args) {
      Application.launch(args);// w  ww .  java  2s  . c o  m
   }

   @Override
   public void start(final Stage primaryStage) {
      primaryStage.setTitle("java2s.com");
      Group root = new Group();
      Scene scene = new Scene(root, 433, 312, Color.WHITE);

      primaryStage.setScene(scene);
      primaryStage.show();

      final Circle ball = new Circle(100, 100, 20);
      RadialGradient gradient1 = new RadialGradient(0, .1, 100, 100, 20, false, CycleMethod.NO_CYCLE,
            new Stop(0, Color.RED), new Stop(1, Color.BLACK));

      ball.setFill(gradient1);

      root.getChildren().add(ball);

      Timeline tl = new Timeline();
      tl.setCycleCount(Animation.INDEFINITE);
      KeyFrame moveBall = new KeyFrame(Duration.seconds(.0200), new EventHandler<ActionEvent>() {

         public void handle(ActionEvent event) {

            double xMin = ball.getBoundsInParent().getMinX();
            double yMin = ball.getBoundsInParent().getMinY();
            double xMax = ball.getBoundsInParent().getMaxX();
            double yMax = ball.getBoundsInParent().getMaxY();

            // Collision - boundaries
            if (xMin < 0 || xMax > scene.getWidth()) {
               dx = dx * -1;
            }
            if (yMin < 0 || yMax > scene.getHeight()) {
               dy = dy * -1;
            }

            ball.setTranslateX(ball.getTranslateX() + dx);
            ball.setTranslateY(ball.getTranslateY() + dy);

         }
      });

      tl.getKeyFrames().add(moveBall);
      tl.play();
   }
}



PreviousNext

Related