[英]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.