Heim > Java > javaLernprogramm > Hauptteil

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

Susan Sarandon
Freigeben: 2024-11-01 05:44:02
Original
836 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage