我正在尝试爆炸和内爆一个圆圈,但爆炸结束后圆圈的状态不会改变,因此它可以内爆。我正在为这个圈子使用一个线程。如果我从绘制圆形组件的面板类中手动更改状态,则 2 种方法(爆炸和内爆)将起作用。从圆形类爆炸完成后,如何将状态更改为内爆?
这是爆炸方法:
public void explode()
{
double xCenter=thisBall.x+15;
double yCenter=thisBall.y+15;
if( (thisBall.x>xCenter-40) &&(thisBall.y>yCenter-40)&&(size<80))
{
thisBall.x--;
thisBall.y--;
size+=2;
thisBall.setFrame(thisBall.x,thisBall.y,size,size);
}
else {state=2;}
}
这是内爆方法:
public void implode()
{
double xCenter=thisBall.x+40;
double yCenter=thisBall.y+40;
if((thisBall.x<xCenter) &&(thisBall.y<yCenter)&&(size>0))
{
thisBall.x++;
thisBall.y++;
size-=2;
thisBall.setFrame(thisBall.x,thisBall.y,size+1,size+1);
}
else{state=3; }
这是该类的运行方法:
public void run()
{ while(state==1)
{
try {
Thread.sleep(40);
}
catch (InterruptedException e)
{ System.out.println("Thread Halted");}
explode();
controller.repaint(); // this is the panel where i draw the circle
}
while(state==2){
try {
Thread.sleep(40);
}
catch (InterruptedException e)
{ System.out.println("Thread Halted");}
implode();
controller.repaint();
}
}