private boolean live = true;
public void draw(Graphics g) {
if(!live) {
tc.explodes.remove(this);
return;
}
if(step == diameter.length) {
live = false;
step = 0;
return;
}
Color c = g.getColor();
g.setColor(Color.ORANGE);
g.fillOval(x, y, diameter[step], diameter[step]);
g.setColor(c);
step ++;
}
这样通过一个数组,就可以不通过线程来控制,以后这种方法值得借鉴
而下面的血块也是借用了上面一种写法,知识稍微改动了点地方:
int step = 0;
private boolean live = true;
//指明血块运动的轨迹,由pos中各个点构成.(目的是让血块按指定的路线动起来)
private int[][] pos = {
{350, 300}, {360, 300}, {375, 275}, {400, 200}, {360, 270}, {365, 290}, {340, 280}
};
private void move() {
step ++;
if(step == pos.length){
step = 0;
}
x = pos[step][0];
y = pos[step][1];
}
这个也是给明了运动轨迹,只不过是循环多次,直到为死亡状态时循环才结束.