5

我正在尝试将一个精灵附加到另一个精灵并将其附加在其父级后面。

这通常很容易,我以前在我的代码中就有过它——但由于某种原因,有一次它不起作用。

该过程通常是将父级的 Z 索引设置为某个数字,并为其子级分配较低的 Z 索引。这是rect父级的代码,icon并附加到它;两者都附加到父实体。然后我sortChildren()在所有东西(矩形、父实体,甚至场景本身)上都尝试了该方法;我知道这效率不高,但我只是想看看是否有什么流行起来。它没有。icon仍在绘制中rect

for (int i=0; i<levelsList.size(); i++) {
    rect = new Sprite(i*(width+padding), 
                      0, 
                      width, 
                      height, 
                      levelSelectorSquareRed, 
                      this.getVertexBufferObjectManager());
    icon = new Sprite((rect.getWidth()-innerWidth)/2f, 
                      (rect.getHeight()-innerHeight)/2f, 
                      innerWidth,
                      innerHeight, 
                      levelIcons.get(i), 
                      this.getVertexBufferObjectManager());
    rect.setZIndex(1);
    icon.setZIndex(0);
    rect.attachChild(icon);
    rect.sortChildren();
    levelSquares.attachChild(rect);
}

levelSquares.setPosition(0, (CAMERA_HEIGHT-height)/2f);
levelSquares.sortChildren();
levelSelectorScene.attachChild(levelSquares);
levelSelectorScene.sortChildren();

从逻辑上讲,这应该是矫枉过正并让它工作,但它不是/我错过了什么吗?

谢谢

4

2 回答 2

17

有一些神奇的东西SO。我可以在一个问题上陷入困境,最后放弃并在这个网站上提问。几分钟之内,问题就轻松解决了。

解决方案:

ChildreninAndEngine GLES2不能被画在他们的后面parents。但!您可以不将child精灵附加到父精灵,而是将两者都附加到实体,给它们 Z 索引,然后对实体进行排序。

levelSquares.attachChild(rect);
levelSquares.attachChild(icon);
rect.setZIndex(1);
icon.setZIndex(0);
levelSquares.sortChildren();
于 2012-10-19T21:06:27.443 回答
5

如果您使用的是 AndEngine GLES2,这很容易:在附加孩子之后,只需将其 Z-Index 设置为负值。

于 2012-11-22T20:25:14.160 回答