Actors
現在、古いマップがロードされた場合に再びマップに配置できるように、スペシャルを保存しようとしています。そのため、それらをに入れHashMap<String, ArrayList<Monster>> monsterAtMap
、そこから削除したいと思いStages
ます。だから私はこれを試しています:
private void saveMonsters() {
if (this.screen.figureStage.getActors().size == 0)
return;
ArrayList<Monster> monsters = new ArrayList<Monster>();
for (Actor a : this.screen.figureStage.getActors()) {
a.remove();
}
Gdx.app.log("Figurstage size", ""+ this.screen.figureStage.getActors().size);
this.monsterAtMap.put(this.currentMap.name, monsters);
}
スタートとして。しかし、すべてを削除するわけではないことに気付きました。10個削除するだけです。size
削除の前後にログを記録します。削除後の現在の 21 (20 モンスターと 1 キャラクター)size
は 11 です。これも追加しましthis.screen.figureStage.getRoot().removeActor(a);
たが、これは何も変更しません。
そのためのアイデアはありますか?
.remove()
[編集] 私は回避策を書いたので、私のアイデアは機能していますが、常に in を削除するとは限らないため、機能するはずの一般的なアイデアは不可能Actor
ですか?! 回避策は次のようになります。
private void saveMonsters() {
this.chara = this.screen.character;
if (this.screen.figureStage.getActors().size == 0)
return;
ArrayList<Monster> monsters = new ArrayList<Monster>();
for (Actor a : this.screen.figureStage.getActors()) {
if (a.getClass() == Monster.class)
monsters.add((Monster) a);
}
this.screen.figureStage.clear();
this.screen.figureStage.addActor(chara);
this.monsterAtMap.put(this.currentMap.name, monsters);
}
は.clear()
正しく動作します。