
adapun sourcenya:
package fjr.booksample; import javafx.scene.transform.Rotate; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.geometry.Orientation; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.control.Slider; import javafx.scene.control.SliderBuilder; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.shape.RectangleBuilder; //author fajar public class MakeABall extends Application { private void init(Stage primaryStage) { final Group root = new Group(); StackPane mainPane = new StackPane(); mainPane.setMinSize(500, 500); primaryStage.setScene(new Scene(mainPane)); Group ensembel = new Group(); double angle = 0; for (int i = 0; i < 10; i++) { Rectangle rect = RectangleBuilder.create().width(100).height(100) .rotationAxis(Rotate.Y_AXIS).rotate(90).fill(getColor()[i]) .build(); Xform xform = new Xform(); xform.getChildren().add(rect); xform.rz.setAngle(45); xform.setTranslateX(200); Xform xform1 = new Xform(); xform1.getChildren().add(xform); xform1.ry.setAngle(angle); ensembel.getChildren().add(xform1); angle += 36; } ensembel.setTranslateX(200); ensembel.setTranslateY(200); ensembel.setRotationAxis(Rotate.Z_AXIS); root.getChildren().add(ensembel); final Slider slider = SliderBuilder.create() .orientation(Orientation.VERTICAL).minWidth(50).minHeight(50) .maxHeight(70).translateX(-230).translateY(-200).build(); slider.valueProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue arg0, Number arg1, Number arg2) { root.setRotationAxis(Rotate.X_AXIS); root.setRotate(slider.getValue()); } }); final Slider slider2 = SliderBuilder.create() .orientation(Orientation.VERTICAL).minWidth(50).minHeight(50) .maxHeight(70).translateX(-190).translateY(-200).build(); slider2.valueProperty().addListener(new ChangeListener () { @Override public void changed(ObservableValue arg0, Number arg1, Number arg2) { root.setRotationAxis(Rotate.Y_AXIS); root.setRotate(slider2.getValue()); } }); mainPane.getChildren().add(root); mainPane.getChildren().addAll(slider, slider2); primaryStage.setResizable(true); } Color[] getColor() { Color[] colors = new Color[10]; colors[0] = Color.ALICEBLUE; colors[1] = Color.RED; colors[2] = Color.YELLOW; colors[3] = Color.YELLOWGREEN; colors[4] = Color.ALICEBLUE; colors[5] = Color.AQUAMARINE; colors[6] = Color.BISQUE; colors[7] = Color.BLUEVIOLET; colors[8] = Color.BROWN; colors[9] = Color.BURLYWOOD; return colors; } class Xform extends Group { final Rotate rx = new Rotate(0, Rotate.X_AXIS); final Rotate ry = new Rotate(0, Rotate.Y_AXIS); final Rotate rz = new Rotate(0, Rotate.Z_AXIS); public Xform() { super(); getTransforms().addAll(rz, ry, rx); } } @Override public void start(Stage primaryStage) throws Exception { init(primaryStage); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
No comments:
Post a Comment