使用随机计时器移动对象
您的目标是创建从屏幕底部随机出现的移动对象,达到一定高度,并且然后下降。为了避免所有形状同时启动,您需要为每个对象实现单独的计时器。
下面提供的方法利用 Shape 类来封装每个对象的属性,包括其随机初始延迟。在计时器的动作监听器中,调用 Shape 方法来处理移动、减少延迟和绘制。
<code class="java">import java.awt.event.ActionListener; import java.util.List; import java.util.Random; class Shape { // Object properties int x; int y; boolean draw; int randomDelay; // Delay before the object starts moving public Shape(int x, int randomDelay) { this.x = x; this.y = 0; // Start at the bottom of the screen this.draw = false; this.randomDelay = randomDelay; } // Object movement logic public void move() { if (draw) { y++; // Move up or down based on the current state } } // Decrease the delay public void decreaseDelay() { randomDelay--; if (randomDelay <= 0) { draw = true; // Start drawing the object once the delay reaches zero } } // Draw the object public void draw(Graphics g) { if (draw) { // Draw the shape on the screen } } }
这种方法确保每个形状都有自己独特的随机延迟,防止它们开始移动同时。
<code class="java">// Create a list of Shape objects with random delays List<Shape> shapes = new ArrayList<>(); for (int i = 0; i < 10; i++) { Random random = new Random(); int randomXLoc = random.nextInt(width); int randomDelay = random.nextInt(500); // Set a random delay between 0 and 499 milliseconds shapes.add(new Shape(randomXLoc, randomDelay)); } // Initialize a timer and specify the action listener Timer timer = new Timer(10, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (Shape shape : shapes) { shape.move(); shape.decreaseDelay(); shape.draw(g); // Draw the shape if allowed } } }); // Start the timer timer.start();</code>
以上是如何在 Java 中创建带有单独计时器的随机移动对象?的详细内容。更多信息请关注PHP中文网其他相关文章!