Я создал отдельный класс, расширяющий AnimatedSprite, называемый «Enemy». Я создал несколько экземпляров Врага в моей сцене. У каждого из них должен быть свой собственный TimerHandler, который контролирует анимацию. Тем не менее, таймеры, похоже, связаны друг с другом, и каждый спрайт меняет свой TileIndex одновременно. Вот код:AndEngine: Несколько TimerHandlers
package com.tahakki.folkprequel;
import java.util.Random;
import org.anddev.andengine.engine.handler.timer.ITimerCallback;
import org.anddev.andengine.engine.handler.timer.TimerHandler;
import org.anddev.andengine.entity.sprite.AnimatedSprite;
import org.anddev.andengine.extension.physics.box2d.PhysicsConnector;
import org.anddev.andengine.extension.physics.box2d.PhysicsFactory;
import org.anddev.andengine.extension.physics.box2d.PhysicsWorld;
import org.anddev.andengine.opengl.texture.region.TiledTextureRegion;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.Contact;
import com.badlogic.gdx.physics.box2d.ContactListener;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.FixtureDef;
public class Enemy extends AnimatedSprite{
private Body physB;
private PhysicsWorld physW = MainActivity.mPhysicsWorld;
private static final FixtureDef FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0, 0);
private TimerHandler timer;
private Random rand = new Random();
public Enemy(float pX, float pY, TiledTextureRegion pTiledTextureRegion) {
super(pX, pY, pTiledTextureRegion);
this.setCurrentTileIndex(rand.nextInt(3));
this.setScale(0.6f);
physB = PhysicsFactory.createBoxBody(physW, this, BodyType.DynamicBody, FIXTURE_DEF);
physB.setFixedRotation(true);
physW.registerPhysicsConnector(new PhysicsConnector(this, physB));
timer = new TimerHandler(2 + (2*rand.nextFloat()), true, new ITimerCallback(){
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
int random = rand.nextInt(3);
Enemy.this.setCurrentTileIndex(random);
}
});
this.registerUpdateHandler(timer);
}
}
Кто-нибудь знает, как позволить каждому объекту иметь собственный независимый таймер? Благодаря!
Нам нужно будет увидеть больше кода, чем это? Является ли таймер статичным? – CaseyB
Нет, я просто определяю его как «таймер TimerHandler»; Статическое изображение не имеет видимого эффекта. –
Пожалуйста, добавьте еще код. –