我使用Andengine創建遊戲,在此我想要一個在天空中飛行的物體在下面放置炸彈。目前我正在使用時間處理程序來創建飛行物體和炸彈。 但它不能正常工作。我面臨的問題是:
1)有時候,而不是一個單一的炸彈2或3個炸彈被丟棄。
2)炸彈對象也沒有得到回收。回收對象的代碼被調用,但它似乎沒有工作。
我注意到一件事情,即假設,最初我有一個飛行物體投下炸彈。當炸彈離開屏幕時,炸彈對象的回收代碼被調用一次。在飛行物離開屏幕後的某個時候,它也會被回收。現在,當另一個飛行物體被創造出來並且炸彈落下時,回收炸彈的代碼就會被召喚兩次。然後,對於第三個飛行物體,回收單個炸彈的代碼被稱爲三次,依此類推。
AndEngine同時移動兩個物體
的代碼添加飛行物體是如下
private void createDragonHandler() {
TimerHandler spriteTimerHandler;
float mEffectSpawnDelay = 10f;
spriteTimerHandler = new TimerHandler(mEffectSpawnDelay, true,
new ITimerCallback() {
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
addDragon();
}
});
getEngine().registerUpdateHandler(spriteTimerHandler);
}
public void addDragon() {
Dragon dragon = (Dragon) dragonSpritePool.obtainPoolItem();
if (dragon.getParent() != mainScene)
mainScene.attachChild(dragon);
}
public synchronized Dragon obtainPoolItem() {
dragon = super.obtainPoolItem();
Random rand = new Random();
final int x = (int) (CAMERA_WIDTH + resourceManager.dragonTextureRegion
.getWidth());
int minY = (int) resourceManager.dragonTextureRegion.getHeight();
int maxY = (int) (CAMERA_HEIGHT/2 - resourceManager.dragonTextureRegion
.getHeight());
int rangeY = maxY - minY;
final int y = rand.nextInt(rangeY) + minY;
dragon.reset();
dragon.setVisible(true);
dragon.setIgnoreUpdate(false);
dragon.animate(150);
dragon.setPosition(x, y);
MoveXModifier mod = new MoveXModifier(15, dragon.getX(),
-dragon.getWidth());
float mEffectSpawnDelay = 5f;
TimerHandler spriteTimerHandler = new TimerHandler(mEffectSpawnDelay,
true, new ITimerCallback() {
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
DragonFire dragonFire = BirdShoot.dragonFireSpritePool
.obtainPoolItem(dragon.getX(), dragon.getY());
BirdShoot.mainScene.attachChild(dragonFire);
}
});
dragon.registerEntityModifier(mod.deepCopy());
dragon.setNoHit(0);
PhysicsHandler mPhysicsHandler;
mPhysicsHandler = new PhysicsHandler(dragon);
dragon.setPhysicsHandler(mPhysicsHandler);
dragon.registerUpdateHandler(dragon.getmPhysicsHandler());
BirdShoot.engine.registerUpdateHandler(spriteTimerHandler);
return dragon;
}
`
我會建議ü張貼在http烏爾問題:// WWW .andengine.org /論壇 – KOTIOS
它已經在那裏http://www.andengine.org/forums/tutorials/binding-two-objects-together-t12520.html,但沒有得到任何迴應:( – Chetna
請看看在一個引擎中的泛型池.. – 2013-07-29 07:08:15