在场景中的顶层设置精灵

时间:2013-04-29 12:21:13

标签: android andengine

我在这里有两个精灵easyEnemy&推土机。 easyEnemy每秒都会产卵。推土机随机出现。

我设置推土机Zindex = 10&为easyEnemy我什么也没设置。

我想把推土机放在所有easyEnemy之上。但它不起作用。我在调用场景中的推土机之前调用sortChildren()。但这没有任何意义。

public class Bulldozer extends PixelPerfectAnimatedSprite {

public Bulldozer(float pX, float pY,
        PixelPerfectTiledTextureRegion pTiledTextureRegion,
        VertexBufferObjectManager pVertexBufferObjectManager) {
    super(pX, pY, pTiledTextureRegion, pVertexBufferObjectManager);

    // SET z-INDEX FOR THIS
    setZIndex(20);
}  
}

在GameScene中,我称之为easyEnemy和bullDozer。首先调用easyEnemy然后调用bullDozer。

已编辑:添加代码

class GameScene extends Scene{
GameScene(){
// constructor 
createEasyEnemy();

CreateBullDOzer();

sortChildren();

}
public synchronized void createEasyEnemy(final float attackDuration,
            final float minTime, final float maxTime) {

        try {

            float delayTimer = attackDuration;
            aTimerHandler = new TimerHandler(delayTimer, true,
                    new ITimerCallback() {
                        @Override
                        public void onTimePassed(TimerHandler pTimerHandler) {
                            //
                            isEasyEnemyCreated = true;
                            engine.unregisterUpdateHandler(pTimerHandler);

                            final EasyEnemy aEasyEnemy = aEasyEnemyPoolObj
                                    .obtainPoolItem();
                            if (!aEasyEnemy.hasParent()) {
                                attachChild(aEasyEnemy);
                            }
                            aEasyEnemy.init(minTime, maxTime);
                            registerTouchArea(aEasyEnemy);
                            easyEnemyLinkedList.add(aEasyEnemy);
                        }
                    });

            registerUpdateHandler(aTimerHandler);
        } catch (Exception e) {
            Log.e("--CreateEasyEnemy-Error", "" + e);
        }
    }


}

我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

尝试使用图层概念。这将满足您的需求,而且非常简单。
您需要将实体添加为图层,并将spry添加到您想要的任何图层 这是一个简单的例子

final int FIRST_LAYER = 0;
final int SECOND_LAYER = 1;

private void createLayers()
{
    scene.attachChild(new Entity()); // First Layer
    scene.attachChild(new Entity()); // Second Layer
}

现在你在场景中有两个图层并将精灵添加到你喜欢的任何图层

scene.getChildByIndex(FIRST_LAYER).attachChild(yourEntity);

This one is a useful link
还有一件事
记住你需要添加图层作为场景中的第一个实体