我目前正試圖保存特殊的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(20Monsters和1個字符)在刪除size
之後是11.我也加了這個this.screen.figureStage.getRoot().removeActor(a);
但這並沒有改變任何東西。
任何想法呢?
[編輯]我寫了一個解決方法,所以我的想法工作,但應該工作的一般想法是不可能的,因爲.remove()
並不總是刪除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()
不正常運行的。
是的,這是正確的答案。我通過保存我的角色並使用清除方法解決了這個問題。爲了避免mapchange上的空指針,我將行爲方法重寫爲空,並調用舞臺常規動作的前面的myAct。所以如果他觸發mapchange怪物不會採取行動,並不會陷入這些問題。 – BennX 2013-04-30 07:05:16