Интервал обновления в главном потоке для таймера - PullRequest
1 голос
/ 16 января 2012

Хорошо, мне нужно знать, есть ли более эффективный способ сделать это.

Я использую AndEngine для размещения спрайтов на сцене в методе.

Теперь на протяжении всей игры я обновляю интервалы, когда должны появляться Спрайты.

Я обновляю интервалы по всему коду.

Например, у меня есть таймер, который добавляет спрайты с интервалом, и я могу изменить интервал

private void speed(int f, int g, int h){

    this.nextSprite1Time = f;
    this.nextSprite2Time = g;
    this.nextSprite3Time = h;
    Log.d("Time Changed", String.valueOf(this.nextSprite1Time+ "," + this.nextSprite2Time + ","+ this.nextSprite3Time));

     }

Когда этот метод запущен, происходит задержка в 3 секунды, и он останавливается.

Как можно избежать этого с помощью безопасных потоков или чего-то еще?

Есть предложения?

РЕДАКТИРОВАТЬ: Вот мой обработчик времени.

mScene.registerUpdateHandler(new TimerHandler(0.02f, true, new ITimerCallback() {
                   @Override
                   public void onTimePassed(TimerHandler pTimerHandler) {
                          addSpriteTime1 += 2; // because timer update = 0.02 seconds
                           if (addSpriteTime1 >= nextSprite1Time) {
                                  addFace();
                                  addSpriteTime1 -= nextSprite1Time;

                           }

                           addSpriteTime2 += 2;
                           if (addSpriteTime2 >= nextSprite2Time) {
                                 addFace2();
                                   addSpriteTime2 -= nextSprite2Time;
                           }

                           addSpriteTime3 += 2;
                           if (addSpriteTime3 >= nextSprite3Time) {
                                   addFace3();
                                   addSpriteTime3 -= nextSprite3Time;
                           }
                   }
           }));
...