>  기사  >  Java  >  Java에서 시차를 둔 개체 이동을 달성하는 방법: 과일 닌자 효과를 위해 타이머 및 지연을 활용합니까?

Java에서 시차를 둔 개체 이동을 달성하는 방법: 과일 닌자 효과를 위해 타이머 및 지연을 활용합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 05:44:02773검색

How to Achieve Staggered Object Movement in Java: Utilizing Timers and Delays for a Fruit Ninja Effect?

움직이는 개체 및 타이머

이 맥락에서 개체가 화면 하단에서 무작위로 나타나 특정 높이까지 올라가기를 원합니다. , 그리고 Fruit Ninja 게임과 유사한 방식으로 다시 내려갑니다. 그러나 시차 지연이 없기 때문에 모든 객체가 동시에 시작되는 문제가 발생합니다.

해결책:

이 문제를 극복하려면 다음을 수행할 수 있습니다. 각 개체에 특정한 지연을 도입합니다. 다음은 감소하는 지연 카운터에 따라 이동을 수행하는 ActionListener와 함께 Shape 클래스를 사용하여 가능한 접근 방식에 대한 설명입니다.

1. 지연 및 이동 논리를 사용한 Shape 클래스:

<code class="java">class Shape {

    private int randomDelayedStart;
    private boolean draw = false;
    private boolean down = false;
    private int y = D_HEIGHT; // Initial position at the bottom of the screen

    public void decreaseDelay() {
        if (randomDelayedStart <= 0) {
            draw = true;
        } else {
            randomDelayedStart -= 1;
        }
    }

    public void move() {
        if (draw) {
            if (y <= 50) {
                down = true;
            }

            if (down) {
                y += INCREMENT;
            } else {
                y -= INCREMENT;
            }
        }
    }
}</code>

2. 각 모양에 대한 무작위 초기화:

Shape 객체를 생성할 때 지연 값을 무작위로 할당할 수 있습니다:

<code class="java">for (int i = 0; i < 20; i++) {
    int randXLoc = random.nextInt(D_WIDTH);
    int randomDelayedStart = random.nextInt(100);
    Shape shape = new Shape(randXLoc, randomDelayedStart);
    list.add(shape);
}</code>

3. 모양 이동을 트리거하는 ActionListener:

단일 Timer에서 ActionListener는 모든 모양을 반복하고 지연 카운터를 감소시키며 이동 메서드를 호출할 수 있습니다. :

<code class="java">ActionListener taskPerformer = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        for (Shape s : shapes) {
            s.decreaseDelay();
            s.move();
            repaint();
        }
    }
};</code>

4. 타이머 시작:

모든 모양을 초기화한 후 타이머를 시작하여 지속적인 움직임을 시작합니다.

<code class="java">timer.start();</code>

이 접근 방식을 사용하면 각 모양에 대한 독립적인 지연과 움직임이 가능해집니다. 후르츠 닌자에서 원하는 동작과 비슷하게 엇갈리게 나타나서 움직입니다.

위 내용은 Java에서 시차를 둔 개체 이동을 달성하는 방법: 과일 닌자 효과를 위해 타이머 및 지연을 활용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.