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 {
@Override
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);
}
}
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 {
@Override
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);
}
}
ستظهر لك النافذة التالية عند التشغيل.