JavaFX Animation হল একটি শক্তিশালী ফিচার যা দিয়ে আপনি আপনার JavaFX অ্যাপ্লিকেশনগুলিতে অ্যানিমেশন এবং ভিজ্যুয়াল ইফেক্ট যুক্ত করতে পারেন। অ্যানিমেশন একটি UI উপাদানের স্টেট বা বৈশিষ্ট্য পরিবর্তন করে দৃশ্যমান পরিবর্তন সৃষ্টি করতে সাহায্য করে, যেমন একটি বাটন বা ছবি স্লাইড করা, স্কেল করা, রোটেট করা, অথবা একটি স্থির অবজেক্টের ওপর বিভিন্ন ধরনের অ্যানিমেশন ইফেক্ট প্রয়োগ করা।
JavaFX-এ অ্যানিমেশন তৈরি করার জন্য বিভিন্ন ধরনের ক্লাস এবং কৌশল রয়েছে, যেমন:
- Transition Class: এটা একটি বেস ক্লাস যা বিভিন্ন ধরনের অ্যানিমেশন (যেমন, ট্রান্সলেট, রোটেট, স্কেল, ইত্যাদি) তৈরি করতে ব্যবহৃত হয়।
- Timeline: এটি একটি অ্যানিমেশন ক্লাস যা নির্দিষ্ট সময়ের মধ্যে একটি বা একাধিক কীফ্রেমে পরিবর্তন করতে ব্যবহৃত হয়।
JavaFX অ্যানিমেশন খুবই সহজে তৈরি করা যায় এবং আপনাকে এই অ্যানিমেশনগুলিকে বিভিন্ন UI উপাদানের ওপর প্রয়োগ করতে সাহায্য করে।
JavaFX Animation এর ধরন:
- Transition Animation:
- এটি single transition effect প্রদান করে, যেমন
TranslateTransition,RotateTransition,ScaleTransition, এবংFadeTransition। প্রত্যেকটি ট্রানজিশন UI উপাদানগুলোর অবস্থান বা বৈশিষ্ট্য পরিবর্তন করতে ব্যবহৃত হয়।
- এটি single transition effect প্রদান করে, যেমন
- Timeline Animation:
- এই অ্যানিমেশনের মাধ্যমে আপনি একাধিক keyframe ব্যবহার করে অ্যানিমেশন তৈরি করতে পারেন। এতে আপনি নির্দিষ্ট সময়ে উপাদানগুলোর পরিবর্তন কন্ট্রোল করতে পারেন।
- Path Transition:
- এই ট্রানজিশনটি একটি নির্দিষ্ট পথে (যেমন একটি রেখা বা কCurve) উপাদানকে অ্যানিমেট করে। এতে বিভিন্ন ধরনের পথ (path) ব্যবহার করা হয়, যেমন
Line,CubicCurve, বাQuadCurve।
- এই ট্রানজিশনটি একটি নির্দিষ্ট পথে (যেমন একটি রেখা বা কCurve) উপাদানকে অ্যানিমেট করে। এতে বিভিন্ন ধরনের পথ (path) ব্যবহার করা হয়, যেমন
JavaFX Animation উদাহরণ:
1. TranslateTransition Animation:
এটি একটি উপাদানকে একটি স্থানে অন্য স্থানে স্থানান্তরিত করতে ব্যবহৃত হয়।
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TranslateTransitionExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি বাটন তৈরি করা
Button btn = new Button("Click Me!");
// TranslateTransition তৈরি করা
TranslateTransition translate = new TranslateTransition();
translate.setNode(btn);
translate.setDuration(Duration.seconds(2)); // 2 সেকেন্ডে অ্যানিমেশন হবে
translate.setByX(200); // 200 পিক্সেল পর্যন্ত হরিজেন্টালি সরে যাবে
translate.setCycleCount(TranslateTransition.INDEFINITE); // পুনরাবৃত্তি করবে
translate.setAutoReverse(true); // প্রতি সাইকেলে পিছনে ফিরে যাবে
// বাটনে ক্লিক হলে অ্যানিমেশন শুরু হবে
btn.setOnAction(e -> translate.play());
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Translate Transition");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- TranslateTransition ক্লাস ব্যবহার করে বাটনটি ২০০ পিক্সেল হরিজেন্টালি সরে যাবে।
setCycleCount(TranslateTransition.INDEFINITE)এর মাধ্যমে অ্যানিমেশনটি অবিরাম চলতে থাকবে এবংsetAutoReverse(true)এর মাধ্যমে অ্যানিমেশনটি প্রতি সাইকেলে উল্টো দিকে ফিরে যাবে।
2. FadeTransition Animation:
এটি একটি উপাদানকে হালকা বা গা dark ় করতে ব্যবহার করা হয়।
import javafx.animation.FadeTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class FadeTransitionExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি বাটন তৈরি করা
Button btn = new Button("Fade In/Out");
// FadeTransition তৈরি করা
FadeTransition fade = new FadeTransition();
fade.setNode(btn);
fade.setDuration(Duration.seconds(2)); // 2 সেকেন্ডে অ্যানিমেশন হবে
fade.setFromValue(1.0); // পূর্ণ দৃশ্যমান (opacity 1.0)
fade.setToValue(0.0); // অদৃশ্য (opacity 0.0)
fade.setCycleCount(FadeTransition.INDEFINITE); // পুনরাবৃত্তি করবে
fade.setAutoReverse(true); // প্রতি সাইকেলে উল্টো দিকে ফিরে যাবে
// বাটনে ক্লিক হলে ফেড অ্যানিমেশন শুরু হবে
btn.setOnAction(e -> fade.play());
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Fade Transition");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- FadeTransition ব্যবহার করে বাটনের অপাসিটি পরিবর্তন করা হয়, ফলে এটি আস্তে আস্তে দৃশ্যমান থেকে অদৃশ্য হয়ে যাবে এবং আবার দৃশ্যমান হবে।
3. ScaleTransition Animation:
এটি উপাদানটির আকার পরিবর্তন করতে ব্যবহৃত হয়।
import javafx.animation.ScaleTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class ScaleTransitionExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি বাটন তৈরি করা
Button btn = new Button("Click to Scale");
// ScaleTransition তৈরি করা
ScaleTransition scale = new ScaleTransition();
scale.setNode(btn);
scale.setDuration(Duration.seconds(2)); // 2 সেকেন্ডে অ্যানিমেশন হবে
scale.setByX(1.5); // 1.5 গুণ আকার বৃদ্ধি করবে
scale.setByY(1.5); // 1.5 গুণ আকার বৃদ্ধি করবে
// বাটনে ক্লিক হলে স্কেল অ্যানিমেশন শুরু হবে
btn.setOnAction(e -> scale.play());
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Scale Transition");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- ScaleTransition ব্যবহার করে বাটনের আকার 1.5 গুণ বাড়ানো হয়।
JavaFX Timeline Animation:
Timeline অ্যানিমেশন দিয়ে আপনি একাধিক keyframe এর মাধ্যমে একটি উপাদানের একাধিক বৈশিষ্ট্যের পরিবর্তন নির্দিষ্ট সময়ের মধ্যে করতে পারেন।
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TimelineExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি বাটন তৈরি করা
Button btn = new Button("Animate Me!");
// Timeline তৈরি করা
Timeline timeline = new Timeline(
new KeyFrame(Duration.ZERO, e -> btn.setTranslateX(0)), // Initial position
new KeyFrame(Duration.seconds(2), e -> btn.setTranslateX(200)) // Move to position X = 200
);
timeline.setCycleCount(Timeline.INDEFINITE); // Infinite animation
timeline.setAutoReverse(true); // Reverse on each cycle
// বাটনে ক্লিক হলে অ্যানিমেশন শুরু হবে
btn.setOnAction(e -> timeline.play());
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Timeline Animation");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Timeline ব্যবহার করে বাটনটি 0 পজিশন থেকে 200 পজিশনে চলে যাবে এবং এটি অবিরাম চলতে থাকবে।
JavaFX Animation এর সুবিধা:
- কাস্টমাইজেশন: JavaFX অ্যানিমেশনগুলির মাধ্যমে আপনি UI উপাদানগুলির আচরণ পরিবর্তন করতে পারেন।
- বিভিন্ন ট্রানজিশন: একাধিক অ্যানিমেশন ফিচার (Translate, Scale, Rotate, Fade, etc.) সহজেই প্রয়োগ করা যায়।
- ইন্টারেক্টিভ অ্যাপ্লিকেশন: অ্যানিমেশন ইউজার ইন্টারফেসকে আরও ইন্টারেক্টিভ এবং দৃষ্টিনন্দন করে তোলে।
এভাবে JavaFX Animation ব্যবহার করে আপনি আপনার JavaFX অ্যাপ্লিকেশনে আকর্ষণীয় অ্যানিমেশন এবং গ্রাফিক্যাল ইফেক্ট যুক্ত করতে পারেন।
Read more