움직이는 개체 및 타이머
이 맥락에서 개체가 화면 하단에서 무작위로 나타나 특정 높이까지 올라가기를 원합니다. , 그리고 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!