这个问题与Android / AndEngine有关,但通常与Java有关。
我有一个for循环,用于附加处理数组中的矩形。这是我的代码。
try {
if ((NPCrectangle.size() > 0) && (NPCbody.size() > 0)) {
System.out.println("NPCrectangle size is "+NPCrectangle.size());
for (int i = 0; i < NPCrectangle.size(); i++) {
System.out.println("For loop ran for NPCrectangle "+i);
for (int j = 0; j < NPCbody.size(); j++) {
NPCrectangle.get(i).setX(NPCbody.get(j).getPosition().x*32);
attachChild(NPCrectangle.get(i));
System.out.println("RECTANGLE ATTACHED FOR NPC"+i);
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
在
System.out.println("NPCrectangle size is "+NPCrectangle.size());
for (int i = 0; i < NPCrectangle.size(); i++) {
System.out.println("For loop ran for NPCrectangle "+i);
我得到“ NPCrectangle的大小是2”,但是然后我只有“对于NPCrectangle 0的循环运行”。它永远不会对数组的第二个元素做任何事情。为什么是这样?
这是我的收获:
04-25 18:45:45.420: W/System.err(2235): java.lang.IllegalStateException: pEntity 'Rectangle' already has a parent: 'GameScene'. New parent: 'GameScene'!
04-25 18:45:45.420: W/System.err(2235): at org.andengine.entity.Entity.assertEntityHasNoParent(Entity.java:1707)
04-25 18:45:45.420: W/System.err(2235): at org.andengine.entity.Entity.attachChild(Entity.java:907)
当您尝试附加两次相同的精灵时,这是一个错误。有什么建议吗?
最佳答案
这个循环
for (int j = 0; j < NPCbody.size(); j++) {
NPCrectangle.get(i).setX(NPCbody.get(j).getPosition().x*32);
attachChild(NPCrectangle.get(i));
System.out.println("RECTANGLE ATTACHED FOR NPC"+i);
取决于
NPCbody.size()
多次运行,但将附加相同的矩形。每次NPCrectangle.get(i)
。因此,您第二次通过内部循环收到错误。