in my code, I make the ball fall well, but if I touch the screen 2 times the animation appear 2 times and if I touch 6 times the animation appear 6 times.
How I can stop the next animation when the last one is running ? This is my code:
public boolean onTouchEvent(final MotionEvent event) {
final int columna;
final int fila;
pixel_x = (int) event.getX();
columna = getColumna(pixel_x);
fila = game.generarFila(columna);
if (game.tableroLleno()) {
Toast.makeText(getApplicationContext(), R.string.fin_del_juego,
Toast.LENGTH_LONG).show();
}
if ((event.getAction() == MotionEvent.ACTION_DOWN) && !pulsado) {
pulsado = true;
animator.start();
animator.setIntValues(200, getPixelFromFila(game.generarFila(columna)));
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
animator.removeAllListeners();
game.ponerJugador(fila, columna);
if (game.comprobarCuatro(Game.JUGADOR)) {
if (Singleton.getInstance().getUsuarioIngresado() != null) {
usuarioActual.setPartidasGanadas(usuarioActual.getPartidasGanadas() + 1);
gestor.guardar(usuarioActual);
}
Toast.makeText(getApplicationContext(), "Has ganado " + Singleton.getInstance().getJugadorIngresado(),
Toast.LENGTH_LONG).show();
if (game.fin()) {
FragmentoDialogo dialogo = new FragmentoDialogo();
dialogo.show(getFragmentManager(), "Alert Dialog2");
}
} else {
columnaMaquina = game.posicion();
while (game.columnaLlena(columnaMaquina)) {
columnaMaquina = game.generarColumna();
}
filaMaquina = game.generarFila(columnaMaquina);
animator2.setIntValues(200, getPixelFromFila(filaMaquina));
animator2.start();
animator2.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
animator2.removeAllListeners();
game.ponerMaquina(filaMaquina, columnaMaquina);
if (game.comprobarCuatro(Game.MAQUINA)) {
if (Singleton.getInstance().getUsuarioIngresado() != null) {
usuarioActual.setPartidasPerdidas(usuarioActual.getPartidasPerdidas() + 1);
gestor.guardar(usuarioActual);
}
Toast.makeText(getApplicationContext(),
"Has perdido " + Singleton.getInstance().getJugadorIngresado(),
Toast.LENGTH_LONG).show();
if (game.fin()) {
FragmentoDialogo dialogo = new FragmentoDialogo();
dialogo.show(getFragmentManager(), "Alert Dialog2");
}
}
pulsado = false;
}
@Override
public void onAnimationCancel(Animator animation) {
}
});
}
}
@Override
public void onAnimationCancel(Animator animation) {
}
});
} else {
return false;
}
return super.onTouchEvent(event);
}
}