0

这个问题是关于 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 size is 2',但我只得到'For loop run for 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)

当您尝试两次附加相同的精灵时,这是一个错误。建议?

4

1 回答 1

2

这个循环

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), 每一次。因此,您第二次通过内部循环得到错误。

于 2013-04-25T23:20:32.627 回答