从对象池中获得爆炸效果。因为是无参构造方法,所以要添加参数。
收回不可见的爆炸效果。
为什么里面有一句i--呢?收回一个爆炸效果,那么这个位置之后的爆炸效果就会前进替补。如果不写这句话,一个for循环下来会有不可见的爆炸效果。但是下一帧会被收回。
//坦克和子弹碰撞的方法
public void collideBullets(List<Bullet> bullets)
{
for (Bullet bullet:bullets)
{
int bulletX = bullet.getX();
int bulletY = bullet.getY();
if(MyUtil.isCollide(x,y,RADIUS,bullet.getX(),bullet.getY()))
{
//子弹消失
bullet.setVisible(false);
//坦克受到伤害
//添加爆炸效果
Explode explode = ExplodesPool.get();
//new Explode(x,y+RADIUS)
explode.setX(x);
explode.setY(y+RADIUS);
explode.setVisible(true);
explode.setIndex(0);
explodes.add(explode);
}
}
}
/**
* 绘制当前坦克上的爆炸效果
* @param g
*/
public void drawExplodes(Graphics g)
{
for(Explode explode : explodes){
explode.draw(g);
}
//将不可见的爆炸效果收回
for (int i=0;i<explodes.size();i++) {
Explode explode = explodes.get(i);
if(explode.isVisible())
{
ExplodesPool.theReturn(explodes.remove(i));
i--;
}
}
}