JavaFXطريقة إضافة التأثير Rotate Transition
المثال التالي يعلمك كيف تضيف التأثير Rotate Transition لأي شيء تنوي وضعه في النافذة.
فعلياً, جعلنا المربع يدور 180 درجة كل ثانية و نصف, ثم يدور بالإتجاه العكسي كما كان موضوعاً قبل أن يبدأ بالدوران.
مثال
import javafx.animation.RotateTransition; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.util.Duration; public class Main extends Application { public void start(Stage stage) { // يمثل النص الذي نريد إضافته في النافذة Text هنا قمنا بإنشاء كائن من الكلاس Text text = new Text("Loading"); // بالإضافة إلى لونه text هنا قمنا بتحديد نوع و حجم خط الكائن text.setFont(new Font("Tahoma", 18)); text.setFill(Color.WHITE); text.setStroke(Color.WHITE); // يمثل المستطيل الذي نريد إضافته في النافذة Rectangle هنا قمنا بإنشاء كائن من الكلاس Rectangle rectangle = new Rectangle(); // rectangle هنا قمنا بتحديد طول و عرض الكائن rectangle.setHeight(100); rectangle.setWidth(100); // بالعرض و الطول rectangle هنا قنما بتحديد درجة إنحناء زوايا الكائن rectangle.setArcWidth(30); rectangle.setArcHeight(30); // إلى اللون الأزرق و حددنا أن لون حدوده هو الأسود rectangle هنا قمنا بإعطاء الكائن لون rectangle.setFill(Color.CADETBLUE); rectangle.setStroke(Color.BLACK); // و الذي سيتيح لنا إضافة تأثير الدوران على أي شيء نربطه به RotateTransition هنا قمنا بإنشاء كائن من الكلاس RotateTransition rotateTransition = new RotateTransition(); // عندما يتم تشغيله rotateTransition هنا قمنا بتحديد المدة التي سيتنفذ خلالها التأثير الذي يمثل الكائن rotateTransition.setDuration(Duration.seconds(1.5)); // rectangle سيتم تطبيقه على الكائن rotateTransition هنا حددنا أن التأثير الذي سنحصل عليه عند تشغيل الكائن rotateTransition.setNode(rectangle); // هو دوران ناحية اليمين بنسبة 180 درجة rotateTransition هنا قلنا أن التأثير الذي سنحصل عليه عند تشغيل الكائن rotateTransition.setByAngle(180); // هنا وضعنا 1- للإشارة إلى أننا لا نريد أن يتم إيقاف التأثير rotateTransition.setCycleCount(-1); // كلما تم تشغيله rotateTransition هنا قلنا أننا نريد أن يتم إرجاع التأثير الذي يفعله الكائن rotateTransition.setAutoReverse(true); // rotateTransition هنا قمنا بتشغيل التأثير الذي يمثله الكائن rotateTransition.play(); // في النافذة Root Node لأننا ننوي جعله الـ StackPane هنا قمنا بإنشاء كائن من الكلاس StackPane root = new StackPane(); // root في الكائن text و rectangle هنا قمنا بإضافة الكائنين root.getChildren().addAll(rectangle, text); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 400, 250); // هنا وضعنا عنوان للنافذة stage.setTitle("Rotate Transition Example"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
ستظهر لك النافذة التالية عند التشغيل.