[英]Sprite spawn is doubling and causing a force close
現在我有在不同時間產生的精靈。 我想弄清楚的是,為什么經過這么長時間之后,它突然開始越來越多地產生僵屍2。 就像它從一對夫婦產卵到像 3 比 6 和更多同時產卵。 我認為我的 postDelayed 會處理得很好,並使它們以恆定的速率而不是遞增。 我不確定這是否是導致它的原因,但似乎在它產生一堆僵屍 2 的時候它強制關閉。 (這可能與我將應用程序設置為 1.5 的事實有關嗎?是否應該像我看到其他人那樣將其設置為更高的值?)任何幫助將不勝感激。 這是一些運行生成的代碼。
@Override
public void run() {
long elapsed;
elapsed=System.currentTimeMillis()-startTime;
if (elapsed> 5000)
{
normZombie.add(createSprite(R.drawable.zombie1));
normZomb.postDelayed(this, 3000);
}
else if (elapsed >15000)
{
normZombie.add(createSprite(R.drawable.zombie1));
normZomb.postDelayed(this, 1500);
}
else
{
normZombie.add(createSprite(R.drawable.zombie1));
normZomb.postDelayed(this, 1000);
}
if (elapsed >= 10000)
{
fastZombie.add(createZombie2(R.drawable.zombie2));
fastZomb.postDelayed(this, 10000);
}
// else if(elapsed >25000)
// {
// fastZombie.add(createZombie2(R.drawable.zombie2));
// fastZomb.postDelayed(this, 5000);
// }
// else if(elapsed >40000)
// {
// fastZombie.add(createZombie2(R.drawable.zombie2));
// fastZomb.postDelayed(this, 3000);
// }
}
被注釋掉的部分我去掉了,因為我認為它有一部分。 我確實認為它會加速它。 if - else 都在那里進行設置,因此在一定時間后生成率會增加。
謝謝
編輯:好的,所以從進一步玩弄它,我相信一些 postDelayeds 是如何彼此遞增的。 我只是擁有了所有東西,但只有其中一個被注釋掉了,它重復了這么多秒,並且它連續正確地執行了它。 當我將其中的一個貼在一起時(不包括 if if-elses ),它們自己開始越來越快地發生。 知道為什么嗎?
所以如果其他人有這個問題......我想出了它是什么。 我需要兩個單獨的可運行文件,因為每次調用 1 時它們會彼此遞增。 這是代碼現在的樣子。
Runnable norm = new Runnable(){
@Override
public void run() {
normZombie.add(createSprite(R.drawable.zombie1));
normZomb.postDelayed(this, 3000);
}
};
Runnable fast = new Runnable(){
@Override
public void run() {
fastZombie.add(createZombie2(R.drawable.zombie2));
fastZomb.postDelayed(this, 10000);
}
};
norm.run();
fast.run();
它像這樣工作得很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.