本文介紹了在不同的時間間隔產卵精靈的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
如果您看到前一個,請將其忘掉。
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,我該如何用代碼在屏幕上顯示比分和計時器。編寫以秒為單位計時的計時器的好方法是什么?)
謝謝大家:)
推薦答案
我認為問題出在設置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
}
}
這篇關于在不同的時間間隔產卵精靈的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,