Thread এবং Timer এর মাধ্যমে Smooth Animation পরিচালনা

Timer এবং Animation - এডাব্লিউটি (AWT) - Java Technologies

280

AWT (Abstract Window Toolkit) ব্যবহার করে Java-তে Thread এবং Timer এর মাধ্যমে Smooth Animation পরিচালনা করা সম্ভব। এই ধরনের অ্যানিমেশন সাধারণত একটি নির্দিষ্ট সময়ে গ্রাফিক্স বা কম্পোনেন্টের অবস্থান পরিবর্তন করতে সাহায্য করে। অ্যানিমেশনটি তৈরির জন্য আপনি Thread বা Timer ব্যবহার করতে পারেন, যার মাধ্যমে একটি সময়সূচী অনুযায়ী কম্পোনেন্টের অবস্থান বা অন্যান্য গুণ পরিবর্তিত হয়।

1. Thread ব্যবহার করে Smooth Animation:

Thread ব্যবহার করে অ্যানিমেশন তৈরি করতে, একটি run() মেথডের মধ্যে কম্পোনেন্টের অবস্থান ধীরে ধীরে পরিবর্তন করতে হবে, এবং এটির জন্য Thread.sleep() ব্যবহার করা যেতে পারে যাতে অ্যানিমেশনটি একটি নির্দিষ্ট গতি বজায় রাখে।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class SmoothAnimationWithThread extends Frame implements Runnable {
    
    private int x = 50;  // Initial X position
    private int y = 50;  // Initial Y position
    private boolean movingRight = true;
    
    public SmoothAnimationWithThread() {
        setSize(400, 400);
        setVisible(true);
        setTitle("Smooth Animation with Thread");
        Thread animationThread = new Thread(this);
        animationThread.start();  // Start the animation thread
    }

    @Override
    public void run() {
        while (true) {
            // Move object horizontally
            if (movingRight) {
                x += 2;
                if (x >= getWidth() - 50) {
                    movingRight = false;  // Change direction
                }
            } else {
                x -= 2;
                if (x <= 0) {
                    movingRight = true;  // Change direction
                }
            }
            
            repaint();  // Request to re-render the frame
            
            try {
                Thread.sleep(10);  // Sleep to control the speed of animation
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.RED);
        g.fillOval(x, y, 50, 50);  // Draw a red circle
    }

    public static void main(String[] args) {
        new SmoothAnimationWithThread();
    }
}

ব্যাখ্যা:

  • run() মেথডে: একটি লুপের মধ্যে x এবং y অবস্থান পরিবর্তন হচ্ছে, এবং repaint() মেথডের মাধ্যমে কম্পোনেন্টটি পুনরায় আঁকা হচ্ছে।
  • Thread.sleep(10): এটি একটি ছোট সময়ের জন্য থ্রেডকে বিরতি দেয়, যাতে অ্যানিমেশনটি মসৃণভাবে চলতে থাকে এবং দ্রুত না হয়।
  • movingRight: এটি নির্দেশ করে যে অবজেক্টটি ডানদিকে যাচ্ছে বা বামে ফিরছে।

2. Timer ব্যবহার করে Smooth Animation:

Timer ব্যবহার করা অনেক সহজ এবং এতে অ্যানিমেশনটিকে নির্দিষ্ট সময় অন্তর অন্তর চালানো যায়। Timer একটি নির্দিষ্ট সময়ের পর ActionListener এর মাধ্যমে একটি অ্যাকশন (যেমন অবজেক্টের অবস্থান পরিবর্তন) কার্যকর করে।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class SmoothAnimationWithTimer extends Frame {
    
    private int x = 50;  // Initial X position
    private int y = 50;  // Initial Y position
    private boolean movingRight = true;
    
    public SmoothAnimationWithTimer() {
        setSize(400, 400);
        setVisible(true);
        setTitle("Smooth Animation with Timer");

        // Create a Timer to update animation every 10 milliseconds
        Timer timer = new Timer(10, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (movingRight) {
                    x += 2;
                    if (x >= getWidth() - 50) {
                        movingRight = false;
                    }
                } else {
                    x -= 2;
                    if (x <= 0) {
                        movingRight = true;
                    }
                }
                repaint();  // Request to re-render the frame
            }
        });
        timer.start();  // Start the timer
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.RED);
        g.fillOval(x, y, 50, 50);  // Draw a red circle
    }

    public static void main(String[] args) {
        new SmoothAnimationWithTimer();
    }
}

ব্যাখ্যা:

  • Timer: এখানে Timer ব্যবহার করা হয়েছে যেটি প্রতি 10 মিলিসেকেন্ড পর পর অ্যানিমেশন আপডেট করে।
  • ActionListener: actionPerformed() মেথডের মধ্যে অবজেক্টের অবস্থান পরিবর্তিত হচ্ছে এবং repaint() মেথড ব্যবহার করে স্ক্রীনে পুনরায় আঁকা হচ্ছে।

তুলনা:

পদ্ধতিThreadTimer
কিভাবে কাজ করেস্বতন্ত্র থ্রেড তৈরি করে এবং অ্যাকশন নিয়ন্ত্রণ করেনির্দিষ্ট সময় অন্তর ActionListener এর মাধ্যমে কাজ করে
সহজতাএকটু জটিল, কারণ Thread.sleep() এবং থ্রেড পরিচালনা করতে হয়সহজ এবং সরাসরি, কেবল একটি ActionListener ব্যবহার করা হয়
অ্যানিমেশন নিয়ন্ত্রণআরও বেশি নিয়ন্ত্রণ এবং ফাইন টিউনিং করা যায়সহজ নিয়ন্ত্রণের জন্য ব্যবহৃত, তবে থ্রেডের তুলনায় কিছুটা কম কাস্টমাইজেবল

  • Thread ব্যবহারের মাধ্যমে আপনি অধিক কাস্টমাইজেশন এবং নির্ভরযোগ্যভাবে অ্যানিমেশন চালাতে পারেন।
  • Timer ব্যবহারের মাধ্যমে আপনি দ্রুত এবং সহজে অ্যানিমেশন তৈরি করতে পারেন, বিশেষ করে যখন কম্প্লেক্স সিঙ্ক্রোনাইজেশন প্রয়োজন হয় না।
Content added By
Promotion

Are you sure to start over?

Loading...