5

スプライトを別のスプライトにアタッチして、その親の後ろにアタッチしようとしています。

これは通常、非常に簡単で、以前にコードで使用したことがありますが、何らかの理由で、1 回のインスタンスで機能しません。

このプロセスは通常、親の Z インデックスをある数値に設定し、より低い Z インデックスをその子に割り当てます。rectが親で、それにiconアタッチされているコードは次のとおりです。どちらも親エンティティに関連付けられています。sortChildren()次に、すべて(rect、親エンティティ、さらにはシーン自体)でメソッドを試しました。これが効率的でないことはわかっていますが、何かがうまくいくかどうかを確認したかっただけです。そうではありません。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ます。問題に行き詰まり、ついにあきらめて、このサイトで質問することができます。数分以内に問題は簡単に解決されます。

ソリューション:

の後ろに番号ChildrenAndEngine 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 に答える