Я использую этот метод для добавления нового спрайта в мою сцену в andengine.
private void addBody(final float pX, final float pY) {
final Scene scene = this.mEngine.getScene();
if (BodyCount >= MAX_BODIES) return;
BodyCount++;
final Sprite matSprite;
final Body body;
if(BodyCount % 2 == 0) {
matSprite = new Sprite(pX, pY,
mTargetTextureRegion);
body = PhysicsFactory.createBoxBody(mPhysicsWorld,
matSprite, BodyType.DynamicBody,
FIXTURE_DEF);
} else {
matSprite = new Sprite(pX, pY,
mTargetTextureRegion);
body = PhysicsFactory.createCircleBody(
mPhysicsWorld, matSprite,
BodyType.DynamicBody, FIXTURE_DEF);
}
scene.getLastChild().attachChild(matSprite);
mPhysicsWorld.registerPhysicsConnector(
new PhysicsConnector(matSprite, body, true, true));
}
Здесь я вызываю метод для добавления тела на сцену.
но ничего не происходит Я регистрируюсь, чтобы видеть, выполняется ли код, и он возвращает истину.
private void createSpriteSpawnTimeHandler(){
TimerHandler spriteTimerHandler;
float mEffectSpawnDelay = 1f;
Random rand = new Random();
final float x = (int) mCamera.getWidth() + mTargetTextureRegion.getWidth();
int minY = mTargetTextureRegion.getHeight();
int maxY = (int)(mCamera.getHeight() - mTargetTextureRegion.getHeight());
int rangeY = maxY - minY;
final float y = rand.nextInt(rangeY) + minY;
spriteTimerHandler = new TimerHandler(mEffectSpawnDelay,true,new ITimerCallback(){
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
Log.e("MainGame", "Adding Body");
addBody(x,y);
}
});
getEngine().registerUpdateHandler(spriteTimerHandler);
}
В чем может быть проблема? Или каков наилучший способ сделать это?
Я хочу, чтобы спрайты добавлялись вверху экрана и текли по экрану, а затем со временем исчезали с экрана.