我在这里有两个精灵easyEnemy和BullDozer。 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);
}
}
}
我该如何实现?
最佳答案
尝试使用图层概念。这将满足您的需求,而且非常简单。
您需要将实体添加为图层,并将spries添加到所需的任何图层
这是一个简单的例子
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,
还有一件事情请记住,您需要添加图层作为场景中的第一个实体
关于android - 在场景的顶层设置 Sprite ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16278515/