1

我有一个精灵,它的大量实例在特定时间点出现在场景中。是否可以让一个特定的实例在屏幕上暂停一个实例。我知道我必须通过线程等待(可能)来做到这一点,但是当我尝试等待特定的精灵实例时,它会暂停整个场景,直到我指定的时间,这不是我想要的。有人可以帮忙吗?

这是代码

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

                removeSprite(_target);

     }

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

4

2 回答 2

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);

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

于 2012-07-31T18:47:37.130 回答
1

您可以使用延迟修改器:

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);
于 2012-07-31T08:59:29.407 回答