[java] 시간에 따른 애니메이션 구현하기

시간에 따른 애니메이션은 Java에서 그래픽 사용자 인터페이스를 개발할 때 흔히 쓰이는 기술입니다. 이를 통해 움직이는 그래픽 요소나 시각적 효과를 손쉽게 구현할 수 있습니다.

Swing Timer를 사용한 애니메이션 구현

Swing Timer는 Java Swing 라이브러리에서 제공하는 기능으로, 일정한 간격으로 작업을 수행할 수 있는 타이머입니다. 시간을 기준으로 그래픽 요소를 조작하여 애니메이션을 구현할 수 있습니다.

다음은 Swing Timer를 사용하여 시간에 따른 움직임을 가지는 간단한 애니메이션을 구현한 예제 코드입니다.

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AnimatedPanel extends JPanel implements ActionListener {
    private int xPosition;
    private int yPosition;
    private int xSpeed;
    private int ySpeed;

    public AnimatedPanel() {
        xPosition = 0;
        yPosition = 0;
        xSpeed = 1;
        ySpeed = 1;

        Timer timer = new Timer(10, this); // 10ms마다 actionPerformed가 호출됨
        timer.start();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        xPosition += xSpeed;
        yPosition += ySpeed;

        // 화면 사이즈를 넘어가면 위치 재조정
        if (xPosition > getWidth()) {
            xPosition = 0;
        }
        if (yPosition > getHeight()) {
            yPosition = 0;
        }

        repaint(); // 화면 갱신
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.fillRect(xPosition, yPosition, 50, 50); // 사각형 그리기
    }
}

위 코드는 JPanel 위에서 이동하는 사각형 애니메이션을 구현한 예제입니다. Timer를 생성하여 일정 간격으로 actionPerformed가 호출되면 사각형의 위치를 변경하고 화면을 갱신하여 움직임을 표현합니다.

Conclusion

Java를 사용하여 시간에 따른 애니메이션을 구현하는 방법을 살펴보았습니다. Swing Timer를 활용하면 간단한 애니메이션을 쉽게 구현할 수 있으며, 이를 응용하여 다양한 그래픽 애니메이션을 개발할 수 있습니다.

참고 자료: Oracle Java Documentation