如何在AndEngine中更改TimerHandler延迟?

我有这个创建的方法,每秒都会向我的andengine场景添加一个精灵。

private void createSpriteSpawnTimeHandler(){ TimerHandler spriteTimerHandler; float mEffectSpawnDelay = 1f; spriteTimerHandler = new TimerHandler(mEffectSpawnDelay,true,new ITimerCallback(){ @Override public void onTimePassed(TimerHandler pTimerHandler) { addFace(); } }); getEngine().registerUpdateHandler(spriteTimerHandler); } 

我想做的是,例如

 if(x <= b){ mEffectSpawnDelay = mEffectSpawnDely - .2f; } 

我遇到的问题是当变量发生变化时。 我无法找到更新TimeHandler的方法,让它知道更改mEffectSpawnDelay变量。

有什么建议么?

我刚刚为你创建了这个课程 。 我认为它应该可行,你可以根据需要改变刻度之间的间隔。 (尚未对其进行测试,因此您可能需要进行一些小修复。但它看起来很好IMO。)

用这种方式:

 Timer timer = new Timer(interval, new Timer.ITimerCallback() { public void onTick() { //Your code to execute each interval. } } (Engine object here).registerUpdateHandler(timer); 

如果您想要更改间隔,则应该保留对计时器的引用。 无论如何,改变间隔使用:

 timer.setInterval(newInterval); 

将处理程序存储在实例变量中,并在需要时调用其setTimerSeconds方法。

在这里查看TimerHandler源文件: http : //code.google.com/p/andengine/source/browse/src/org/anddev/andengine/entity/handler/timer/TimerHandler.java? r=30ba07312ed7d4636077b835ba15f772e3f30db7

您将看到没有更新间隔的方法。 变量mTimerSeconds也是最终的。

我将实现自己的IUpdateHandler类并添加一个非final的mTimerSeconds和一个更新它的方法。

您可以复制现有的TimerHandler,然后相应地进行更改。

使用新的FixedStepEngine覆盖onCreateEngine方法

 @Override public Engine onCreateEngine(EngineOptions pEngineOptions) { return new FixedStepEngine(pEngineOptions, 30); }