我真的是编程新手(主要是在OOP中),所以也许这不是要回答的问题,但是无论如何都会这样做,可以取消或停止方法吗?我需要取消该方法(A),以执行其他类似的方法(方法B),但具有不同的方面;当我使用另一种方法(B)进行迭代时,委托人(A)仍然在做他的事情,并且我需要停止它,有人可以帮我吗? 我的故事是关于使用timerTask在3个不同位置移动仙子的,当向导得到一个精灵时,仙女从天空消失并进入了一个“监狱”,然后我做一个仙女仍在天空中移动的条件。也有任何评论提高我的编码的接受度<3
//这是第一个通过窗口打开事件开始的方法
public void moverHadaUno(){
TimerTask task = new TimerTask() {
@Override
public void run()
{
switch(POJO.contadorHada1){
case 0:
hada1HbLabel.setLocation(POJO.PP_HADA1_X,POJO.PP_HADA1_Y);
hada1Label.setLocation(POJO.PP_HADA1_X,POJO.PP_HADA1_Y);
POJO.contadorHada1++;
System.out.println(hada1Label.getBounds());
break;
case 1:
hada1HbLabel.setLocation(POJO.SP_HADA1_X,POJO.SP_HADA1_Y);
hada1Label.setLocation(POJO.SP_HADA1_X,POJO.SP_HADA1_Y);
System.out.println(hada1Label.getBounds());
POJO.contadorHada1++;
break;
case 2:
hada1HbLabel.setLocation(POJO.TP_HADA1_X,POJO.TP_HADA1_Y);
hada1Label.setLocation(POJO.TP_HADA1_X,POJO.TP_HADA1_Y);
System.out.println(hada1Label.getBounds());
POJO.contadorHada1 = POJO.RESET;
break;
}
}
};
if(POJO.conHada1 == true)
task.cancel();
Timer timer = new Timer();
timer.schedule(task, 0, 2000);
}
这个是用向导捕捉仙女的
public void hitBox(){
Rectangle hitBoxMago = magoLabel.getBounds();
Rectangle Hada1Hb = hada1HbLabel.getBounds();
if(hitBoxMago.intersects(Hada1Hb)){
POJO.atraparHada1 = true;
POJO.conHada1 = true;
}
else
POJO.atraparHada1 = false;
POJO.conHada1 = false;}
private void capturarHada(){
hitBox();
if(POJO.atraparHada1 == true){
hada1Label.setLocation(POJO.HADA1_CARCELX,POJO.HADA1_CARCELY);
hada1HbLabel.setLocation(POJO.HB_CARCEL_HADAS_X,POJO.HB_CARCEL_HADAS_Y);
}