如何在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); }