AndEngine-在其父母身后绘制精灵的孩子

时间:2012-10-19 20:48:35

标签: android z-index sprite andengine

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

这通常很容易,而且我之前在我的代码中只有一个 - 但由于某种原因,在一次实例中,它不起作用。

该过程通常是将父级的Z索引设置为某个数字,并为其子级分配较低的Z索引。以下代码中rect是父代,icon附加到代码中;两者都附加到父实体。 然后我尝试了所有的sortChildren()方法(rect,父实体,甚至是场景本身);我知道这不是很有效,但我只是想知道是否有东西可以抓住。它没有。 icon仍在rect上绘制{/ 1}}

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();

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

由于

2 个答案:

答案 0 :(得分:17)

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

解决方案:

没有。 Children中的AndEngine GLES2无法在parents后面显示child。但!您可以将两者都附加到实体,为它们添加Z索引,然后对实体进行排序,而不是将levelSquares.attachChild(rect); levelSquares.attachChild(icon); rect.setZIndex(1); icon.setZIndex(0); levelSquares.sortChildren(); 精灵附加到父精灵。

{{1}}

答案 1 :(得分:5)

如果你正在使用AndEngine GLES2,那很简单:在附加孩子之后,只需将其Z-Index设置为负值。