私は60x /秒と呼ばれる同期メソッドを使用しています。このメソッドは、ArrayListが空であるかどうかをチェックします。Javaメソッドが偽であってもif-clauseに入る
{true
Finished
true
Finished
true
true
Finished
true
true
Finished
true}
なぜそれがあれば()その空かどうかに足を踏み入れることができます。でも、それが空だならば、それは
public synchronized void removeGameObjectsFromList()
{
if (!GAMEOBJECTSTOREMOVE.isEmpty())
{
for (int i = 0; i < GAMEOBJECTSTOREMOVE.size(); i++)
{
GameObject obj = GAMEOBJECTSTOREMOVE.get(i);
getRegionNodes().getChildren().remove(obj.getCurrentImageView());
GAMEOBJECTS.remove(obj.getNAME());
}
GAMEOBJECTSTOREMOVE.clear();
System.out.println("Finished");
}
System.out.println(GAMEOBJECTSTOREMOVE.isEmpty());
}
出力は次のようになります...もし、句の中に、手順?
方法は、私の見解では、すべての「リビング」箇条書きを更新し、「BulletManager」に呼び出されます。上記のコメントで示唆したよう
AnimationTimer timer = new AnimationTimer()
{
@Override
public void handle(long now)
{
if (!(BULLETS.isEmpty()))
{
for (int i = 0; i < BULLETS.size(); i++)
{
Bullet currentBullet = BULLETS.get(i);
if (currentBullet.getDistance() > 0)
{
currentBullet.move(currentBullet.getANGLE());
currentBullet.getCurrentImageView().setTranslateX(currentBullet.getCoordinate().getX());
currentBullet.getCurrentImageView().setTranslateY(currentBullet.getCoordinate().getY());
currentBullet.decrementDistance();
} else
{
GAMEMANAGER.addGameObjectToBeRemoved(currentBullet);
}
}
}
}
};
timer.start();
それが起こる可能性のある理由... – Andremoniy
"なぜこれが起こりますか?"できない。あなたのコードをデバッグしようとしましたか?また、メソッドのスターに 'GAMEOBJECTSTOREMOVE.isEmpty()'を表示する必要があります。 – Turing85
[mcve]を入力してください。 –