Spawn спрайт через разные интервалы - PullRequest
3 голосов
/ 26 мая 2011

Забудьте предыдущую, если вы ее видели.

public void createNormZomb(){ 

                normZombie.add(createSprite(R.drawable.zombie1));
                normZomb.postDelayed(this, 1000);
            }

@Override
public void run() {
    normZombie.add(createSprite(R.drawable.zombie1));
    normZomb.postDelayed(this, 1000);

}

Так что в основном я делаю то, что хочу Каждую 1 секунду он порождает еще одного зомби. Единственный недостаток - когда он работает как 30 секунд или что-то в этом роде, он закрывается. До тех пор, пока это время не пройдет, это прекрасно. (К вашему сведению, он реализует Runnable вверху) Если у кого-то есть идеи относительно того, почему сила закрывается после того, как прошло столько времени, я был бы очень признателен.

(В качестве примечания, если кто-нибудь знает, что я должен делать по этому поводу, я привык использовать XML. Как отображать счет и таймер на экране в коде, поскольку я не использую XML. И что быть хорошим способом написать таймер, который считает в секундах.)

Спасибо всем:)

1 Ответ

2 голосов
/ 26 мая 2011

Я думаю, что проблема заключается в установке time = 5.Если вы сделаете x % 5, вы не сможете получить 5 в результате.Если я попытаюсь разделить 23 на 5, ответ будет 4, а остаток 3, 23 = 4*5 + 3.Для этого 23 % 5 = 3.Надеюсь, это решит вашу проблему (и я изменил несколько вещей ..):

protected void onDraw(Canvas canvas) {
  canvas.drawColor(Color.BLACK);
  for (int i = 0; i < temps.size(); i++) {
  //or was there a reason to do the loop backwards...?
    temps.get(i).onDraw(canvas);
  }

  for (Sprite sprite : normZombie) {//for each normZombie do:
    //for(int i=0; i<normZombie.size();i++) no need to loop again, right?

    long startTime=System.currentTimeMillis();                      
    long elapsed=(System.currentTimeMillis() - startTime) / 1000;
    int time = 3;//,0,1,2 or 4
    if(elapsed % 5 == time)
      sprite.onDraw(canvas);
    }
  }

private void createSpritesNorm(){         
  for (int i = 0; i < 12; i++) {
    normZombie.add(createSprite(R.drawable.zombie1));//do this 12 times
  }
}
...