/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package preloader.explode;
import java.util.ArrayList;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Rectangle2D;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
import javafx.util.Duration;
/**
*
* @author msi
*/
public class FancyPreloader extends Application {
/**
* @param args
* the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
Group g = new Group();
ImageView imgView;
Image image;
Button btn;
@Override
public void init() {
}
public void animate() {
Timeline time = new Timeline();
time.getKeyFrames().add(
new KeyFrame(Duration.millis(0), new KeyValue(g
.opacityProperty(), 1)));
for (Node n : g.getChildren()) {
time.getKeyFrames().add(
new KeyFrame(Duration.millis(800), new KeyValue(n
.layoutXProperty(), (Math.random() * 2000) - 1000),
new KeyValue(n.layoutYProperty(),
(Math.random() * 2000) - 1000)
// new
// KeyValue(((Rotate)n.getTransforms().get(1)).angleProperty(),(Math.random()*360))
)
);
}
time.getKeyFrames().addAll(
new KeyFrame(Duration.millis(800), new KeyValue(
g.opacityProperty(), 1)),
new KeyFrame(Duration.millis(1000),
new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
for (Node n : g.getChildren()) {
n.setLayoutX(0);
n.setLayoutY(0);
g.setOpacity(1);
btn.setVisible(true);
imgView.setVisible(true);
g.setVisible(false);
}
}
}, new KeyValue(g.opacityProperty(), 0))
);
time.play();
}
ArrayList<KeyFrame> frame = new ArrayList<KeyFrame>();
@Override
public void start(Stage primaryStage) {
btn = new Button();
btn.setText("Click Me :)");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
btn.setVisible(false);
imgView.setVisible(false);
g.setVisible(true);
if (g.getChildren().size() == 0) {
for (int i = 0; i < 100; i++) {
ImageView r = new ImageView();
r.setImage(image);
r.getTransforms().addAll(
new Rotate(Math.random() * 360, Rotate.Y_AXIS),
new Rotate(Math.random() * 360, Rotate.X_AXIS),
new Rotate(Math.random() * 360, Rotate.Z_AXIS)
);
Rectangle2D rec = new Rectangle2D(Math.random() * 1000,
Math.random() * 1000, Math.random() * 100, Math
.random() * 100);
r.setViewport(rec);
g.getChildren().add(r);
}
}
animate();
}
});
Stop[] stops = new Stop[] { new Stop(0, Color.web("#00254f")),
new Stop(0.5, Color.web("#79b488")),
new Stop(1, Color.web("#f3e586"))
};
LinearGradient lg = new LinearGradient(0, 0, 0, 1, true,
CycleMethod.NO_CYCLE, stops);
StackPane root = new StackPane();
image = new Image(getClass().getResource("img.png").toExternalForm());
imgView = new ImageView(image);
imgView.setPreserveRatio(true);
imgView.setFitWidth(250);
imgView.setLayoutX(0);
imgView.setLayoutY(0);
root.getChildren().addAll(imgView, btn, g);
Scene scene = new Scene(root, 500, 250, lg);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
}