Olá Dres?? Tudo bem?? Estou com um problema… estou a usar a classe Timer… e preciso q em dado momento seu action performed seja interrompido… mas infelizmente o comando stop() é completamente ignorado…
public void moverPessoa(final GerenciadorDesenho desenho, final int posicaoArray){
Timer timer = new Timer(60, new ActionListener(){
public void actionPerformed(ActionEvent e){
if(getAgente().detectaColisao()){
decidirDirecao();
setRoda(false);
stop();
//aqui a bolinha deveria ser removida do arraylist
}else{
setX(getAgente().getX() + getDx());
setY(getAgente().getY()+ getDy());
getAgente().setX(getX());
getAgente().setY(getY());
desenho.repaint();}
}
});
timer.start();
}
Como faço para sair da ação do Timer… quando a colisão ocorrer??
Desde ja agradeço.
Você esta utilizando java.util.Timer ou javax.swing.Timer ?
com java.util.Timer eu fazia assim:
t.cancel
mas não obtive sucesso ao tentar retomar o Timer, até gostaria de uma opinião da galera por que uma ecessão era gerada?
agora com javax.swing.Timer
private Timer t;
public MyClass(int tempo)
{
t = new Timer(tempo, new Action());
...
t.start;
}
public void parar() //para parar o Timer
{
t.stop;
}
da uma olhadinha aqui que vai lhe ajudar muito
Pelo que ví de Timer até hj, ele é como uma Thread em que você especifica o tempo que ela vai realizar uma determinada ação. Como um contador regressivo.
Na definição da Ação você pode condicioná-la a uma determinada variável estática que você controla de fora do Timer.
Sua variável para controle…
...
private boolean static continuar = true;
...
Seu Timer
timer = new Timer(1000, new ActionListener(){
public void actionPerformed(ActionEvent e){
while(continuar){
// faz algo...
}
}
});
O controlador do Timer
...
if(xxx)
continuar = false;
...
:roll:
que é exatamente o que você está fezendo hehehehe
...
if(getAgente().detectaColisao()){
decidirDirecao();
setRoda(false);
stop();
//aqui a bolinha deveria ser removida do arraylist
}
...
Rapaz… verifique se esse seu getAgente está Singleton mesmo, caso tenha definido assim… Ou faça esse detecta colisão setar uma variável de controle como exemplifiquei com o ‘continuar’ aí em cima.