如何使sprite的特定实例暂停一段时间

时间:2012-07-31 06:43:05

标签: sprite andengine

我有一个精灵,在特定的时间点有许多实例在场景中。是否可以在屏幕上为一个实例暂停一个特定实例。我知道我必须使用线程等待(可能),但是当我尝试在特定的精灵实例上等待时,它会暂停整个场景,我指定的时间不是我想要的。有人可以帮忙吗?

这是代码

    if((_target.contains(P4X[5], P4Y[5])) || (_target.contains(P5X[4], P5Y[4]))){

                removeSprite(_target);

     }

我想在这里等一段时间然后删除精灵_target。

2 个答案:

答案 0 :(得分:3)

您需要的两个工具是

// will make your sprite stop updting.
sprite.setIgnoreUpdate(true);

使用TimerHandler完成后重新激活精灵。

//TimerHandler(seconds, autoReset, callback)
TimerHandler timerHandler = new TimerHandler(0.1f, true, new ITimerCallback(){
@Override
public void onTimePassed(TimerHandler arg0) {
     // Called when timer has completed
     // unpause your sprite here.
}
});
scene.registerUpdateHandler(timerHandler);

这两个工具可以让你暂停和取消暂停精灵。

答案 1 :(得分:1)

您可以使用DelayModifier:

DelayModifier mod = new DelayModifier(numberOfSeconds);
mod.addModifierListener(new IModifierListener<IEntity>() {

    @Override
    public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
        removeSprite(_target);

    }
});
_target.registerEntityModifier(mod);