我正在学习java,并试图制作不同的功能和系统。现在我正在尝试制作一个非常简单的粒子系统,但我遇到了问题。粒子系统,数组中的延迟
public void eDelay()
{
try
{
Thread.sleep(17);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
public void engine()
{
int i = 0;
while (i < particles.size())
{
Particle a = (Particle) particles.get(i);
eDelay();
a.move();
i = i + 1;
}
}
public void actionPerformed(ActionEvent e)
{
engine();
repaint();
}
这是我的代码中粒子假设移动的一部分。它工作正常,他们确实移动,但我希望他们一个接一个地拖延(17)。然而,他们一举一动,而不是一个接一个。 (粒子)是一个arrayList,其中包含50个元素,每个元素包含一个粒子的位置。 (a.move())只是一个粒子向上移动的移动方法。
不要担心代码的其余部分,问题出在这一部分。
图形,颗粒的定位,颗粒的运动和其他事情都很好。
'”不要担心代码的其余部分,问题出在这一部分 - 图形,颗粒的定位,颗粒的运动以及其他事情都可以正常工作。“ - 你怎么说当你知道你的问题的原因是什么?您可能正在创建一个Swing应用程序(它是其余代码的一部分)并在事件线程上调用'Thread.sleep(...)'。所以,不要做任何假设,告诉我们所有的故事,展示更多相关的代码,让我们来帮助你解决这个问题。如果这是Swing那么这就是你的问题 - 不要调用Thread.sleep,使用Swing Timer! –
我对此有点困惑,我使用swing定时器作为游戏计时器,所以程序在一个连续的循环。两个计时器不会以奇怪的方式相互影响吗? – Mgssky
@ user2522083:两个定时器应该运行得很好,但它们控制的代码是否会相互影响取决于你编写程序的方式。我认为我们不可能说。由于Swing代码都是单线程的,因此应该表现良好。 –