Heim  >  Artikel  >  Java  >  Wie erreicht man eine gestaffelte Objektbewegung in Java: Verwendung von Timern und Verzögerungen für einen Fruit-Ninja-Effekt?

Wie erreicht man eine gestaffelte Objektbewegung in Java: Verwendung von Timern und Verzögerungen für einen Fruit-Ninja-Effekt?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 05:44:02769Durchsuche

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

Objekte und Timer bewegen

In diesem Zusammenhang möchten Sie, dass Objekte zufällig am unteren Bildschirmrand erscheinen und bis zu einer bestimmten Höhe aufsteigen , und steigen Sie dann wieder nach unten ab, ähnlich wie im Spiel Fruit Ninja. Es tritt jedoch ein Problem auf, bei dem alle Objekte aufgrund fehlender gestaffelter Verzögerungen gleichzeitig beginnen.

Lösung:

Um dieses Problem zu lösen, können Sie Folgendes tun Verzögerungen einführen, die für jedes Objekt spezifisch sind. Nachfolgend finden Sie eine Erläuterung eines möglichen Ansatzes unter Verwendung einer Shape-Klasse mit einem ActionListener, der die Bewegung basierend auf einem abnehmenden Verzögerungszähler ausführt.

1. Formklasse mit Verzögerung und Bewegungslogik:

<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. Zufällige Initialisierung für jede Form:

Beim Erstellen jedes Form-Objekts können Sie zufällig einen Verzögerungswert zuweisen:

<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 zum Auslösen von Formbewegungen:

In einem einzigen Timer kann ein ActionListener alle Formen durchlaufen, ihre Verzögerungszähler dekrementieren und ihre Bewegungsmethoden aufrufen :

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

4. Starten des Timers:

Nachdem Sie alle Formen initialisiert haben, starten Sie den Timer, um die kontinuierliche Bewegung zu starten:

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

Dieser Ansatz ermöglicht unabhängige Verzögerungen und Bewegungen für jede Form, um dies sicherzustellen Sie erscheinen und bewegen sich versetzt und ähneln dem gewünschten Verhalten in Fruit Ninja.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine gestaffelte Objektbewegung in Java: Verwendung von Timern und Verzögerungen für einen Fruit-Ninja-Effekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn