私は LibGDX を使用し、ゲーム内でカメラのみを動かします。昨日、私は自分のゲームで地面を描く方法を確立しました。Flappy Bird のクローンを作成しようとしていますが、画面上で動く地面の描画に問題があります。Actor
すべてのレンダリング呼び出しで、に新しいを追加しますStage
が、数回後に描画が流れなくなります。1 秒あたりのフレーム数は非常に高速です。ゲームで地面を描く別の方法はありますか?
18802 次
3 に答える
19
@kabbからのソリューションの微調整:
for(Actor actor : stage.getActors()) {
//actor.remove();
actor.addAction(Actions.removeActor());
}
私の経験から、actor.remove()
while iteratingstage.getActors()
を呼び出すと、アクティブに反復されている配列からアクタが削除されるため、 loop が中断されます。
ConcurrentModificationException
一部の配列のようなクラスは、この種の状況に対して警告として をスローします。
そのため...回避策は、アクターに後で自分自身を削除するように指示することですAction
actor.addAction(Actions.removeActor());
または...何らかの理由でアクターを削除するのが待ちきれない場合は、次を使用できますSnapshotArray
。
SnapshotArray<Actor> actors = new SnapshotArray<Actor>(stage.getActors());
for(Actor actor : actors) {
actor.remove();
}
于 2015-08-16T19:10:27.137 に答える
5
親からアクターを削除する最も簡単な方法は、そのremove()
メソッドを呼び出すことです。例えば:
//Create an actor and add it to the Stage:
Actor myActor = new Actor();
stage.addActor(myActor);
//Then remove the actor:
myActor.remove();
于 2015-01-06T21:16:01.703 に答える