المثال التالي يعلمك كيف تضيف التأثير Path Transition لأي شيء تنوي وضعه في النافذة.
فعلياً, قمنا برسم المسار الذي سيتحرك النص فوقه. كل ثانيتين جعلناه يسير عليه و من ثم يرجع لمكانه الأصلي الذي كان موضوعاً فيه قبل أن يتحرك.
مثال
import javafx.animation.PathTransition; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; 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("HARMASH.COM"); // بالإضافة إلى لونه text هنا قمنا بتحديد نوع و حجم خط الكائن text.setFont(new Font("Tahoma", 28)); text.setFill(Color.RED); text.setStroke(Color.BLACK); // يمثل المسار الذي ننوي جعل النص يسير عليه Path هنا قمنا بإنشاء كائن من الكلاس // ملاحظة: المسار عبارة عن مجموعة نقاط قمنا بتحديد مكان كل نقطة منهم في النافذة Path path = new Path(); MoveTo move = new MoveTo(200, 30); LineTo line1 = new LineTo(300, 125); LineTo line2 = new LineTo(200, 220); LineTo line3 = new LineTo(100, 125); LineTo line4 = new LineTo(200, 30); path.getElements().addAll(move, line1, line2, line3, line4); // و الذي سيتيح لنا إضافة تأثير التحرك على أي شيء نربطه به PathTransition هنا قمنا بإنشاء كائن من الكلاس PathTransition pathTransition = new PathTransition(); // عندما يتم تشغيله pathTransition هنا قمنا بتحديد المدة التي سيتنفذ خلالها التأثير الذي يمثل الكائن pathTransition.setDuration(Duration.seconds(2)); // text سيتم تطبيقه على الكائن pathTransition هنا حددنا أن التأثير الذي سنحصل عليه عند تشغيل الكائن pathTransition.setNode(text); // path هو التحرك على النقاط الموضوعة في الكائن pathTransition هنا قلنا أن التأثير الذي سنحصل عليه عند تشغيل الكائن pathTransition.setPath(path); // هنا وضعنا 1- للإشارة إلى أننا لا نريد أن يتم إيقاف التأثير pathTransition.setCycleCount(-1); // كلما تم تشغيله pathTransition هنا قلنا أننا نريد أن يتم إرجاع التأثير الذي يفعله الكائن pathTransition.setAutoReverse(true); // pathTransition هنا قمنا بتشغيل التأثير الذي يمثله الكائن pathTransition.play(); // في النافذة Root Node لأننا ننوي جعله الـ StackPane هنا قمنا بإنشاء كائن من الكلاس Group root = new Group(); // root في الكائن text هنا قمنا بإضافة الكائن root.getChildren().addAll(text); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 400, 250); // هنا وضعنا عنوان للنافذة stage.setTitle("Path Transition Example"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
ستظهر لك النافذة التالية عند التشغيل.
