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!