Beleza pessoal?
Preciso de uma ajuda pro meu TCC.
Estou construindo um CustomItem. Simplificando, ele possui uma barra de progresso e uma imagem.
Enquanto a barra não enche, o usuário não pode fazer nenhuma ação.
Quando a barra de progresso chega o máximo, ela é reiniciada e o usuário pode mover a imagem usando as teclas do celular, enquanto a barra não enche.
Assim, o usuário vai alternando ação/espera através da barra de progresso.
O problema está na função traverse. Se eu coloco uma condição para testar a flag que representa o estado ação/espera, não funciona.
Vou colocar aqui trechos do código, para tentar explicar melhor.
Aqui está o construtor do meu item, com o TimerTask responsavel pelo incremento da barra
public Progress(String title)
{
boolean agir = false;
int max = 0;
int current = 0;
....
TimerTask task = new TimerTask() {
public void run() {
increment();
repaint();
}
};
Timer timer = new Timer();
timer.schedule(task,0,100);
}
...
A função increment, como o nome diz, incrementa a barra e, se chegar ao maximo, muda a flag agir
public void increment()
{
current++;
if(current > max){
currrent = 0;
agir = !agir;
}
repaint();
}
Através da flag agir, eu consigo saber se o usuário pode fazer alguma ação ou não.
Na função traverse, eu teria que testar esta flag e pegar as ações do teclado.
protected boolean traverse( int dir, int viewportWidth, int viewportHeight, int[] visRect_inOut ){
if(agir) {
switch(dir) {
case Canvas.UP: return testa("cima");
case Canvas.DOWN: return testa("baixo");
case Canvas.LEFT: return testa("esquerda");
case Canvas.RIGHT: return testa("direita");
}
}
return false;
}
private boolean testa(String tecla){
System.out.println(tecla);
return true;
}
Mas não está funcionando. Aperto as teclas direcionais, mas nada acontece.
O curioso é que, se eu tirar o teste da flag, funciona corretamente.
Alguma sugestão?
Agradeço a todos!