如何解决Sprite生成倍增并导致关闭力
| 现在,我有在不同时间生成的精灵。我要弄清楚的是,为什么经过这么长时间,它突然开始生成越来越多的zombie2。就像是从一对产卵到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-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();
这样很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。