aetsu
14/07/11, 01:25:33
Buenas, estoy trasteando para "hacer" un juego con android, y tengo un personaje que se mueve por pantalla al tocar en un pad que dibujo en esta. El problema lo tengo en el onTouchEvent ya que mi idea es que al mantener pulsado el pad el personaje no pare de moverse, pero en mi caso lo que hace es moverse solo una vez y tengo que pulsar y soltar para que avance cada poco.
No se si me he explicado bien xD, aquí esta el codigo de la función onTouchEvent:
public boolean onTouchEvent(MotionEvent event) {
if (System.currentTimeMillis() - lastClick > 500) {
lastClick = System.currentTimeMillis();
synchronized (getHolder()) {
for (int i = vPad.size() - 1; i >= 0; i--) {
Pad p = vPad.get(i);
// arriba + iquierda
if (p.isCollition(event.getX(), event.getY()) && i == 0) {
per.moverPersonaje(-per.velocidad, -per.velocidad);
}
// arriba
if (p.isCollition(event.getX(), event.getY()) && i == 1) {
per.moverPersonaje(0, -per.velocidad);
}
// arriba + derecha
if (p.isCollition(event.getX(), event.getY()) && i == 2) {
per.moverPersonaje(per.velocidad, -per.velocidad);
}
// izquierda
if (p.isCollition(event.getX(), event.getY()) && i == 3) {
per.moverPersonaje(-per.velocidad, 0);
}
// al pulsar el centro no ocurre nada, por eso omitimos
// la
// comprobacion
// derecha
if (p.isCollition(event.getX(), event.getY()) && i == 5) {
per.moverPersonaje(per.velocidad, 0);
}
// abajo + iquierda
if (p.isCollition(event.getX(), event.getY()) && i == 6) {
per.moverPersonaje(-per.velocidad, per.velocidad);
}
// abajo
if (p.isCollition(event.getX(), event.getY()) && i == 7) {
per.moverPersonaje(0, per.velocidad);
}
// abajo + derecha
if (p.isCollition(event.getX(), event.getY()) && i == 8) {
per.moverPersonaje(per.velocidad, per.velocidad);
}
}
}
}
return true;
}
}
Gracias.
No se si me he explicado bien xD, aquí esta el codigo de la función onTouchEvent:
public boolean onTouchEvent(MotionEvent event) {
if (System.currentTimeMillis() - lastClick > 500) {
lastClick = System.currentTimeMillis();
synchronized (getHolder()) {
for (int i = vPad.size() - 1; i >= 0; i--) {
Pad p = vPad.get(i);
// arriba + iquierda
if (p.isCollition(event.getX(), event.getY()) && i == 0) {
per.moverPersonaje(-per.velocidad, -per.velocidad);
}
// arriba
if (p.isCollition(event.getX(), event.getY()) && i == 1) {
per.moverPersonaje(0, -per.velocidad);
}
// arriba + derecha
if (p.isCollition(event.getX(), event.getY()) && i == 2) {
per.moverPersonaje(per.velocidad, -per.velocidad);
}
// izquierda
if (p.isCollition(event.getX(), event.getY()) && i == 3) {
per.moverPersonaje(-per.velocidad, 0);
}
// al pulsar el centro no ocurre nada, por eso omitimos
// la
// comprobacion
// derecha
if (p.isCollition(event.getX(), event.getY()) && i == 5) {
per.moverPersonaje(per.velocidad, 0);
}
// abajo + iquierda
if (p.isCollition(event.getX(), event.getY()) && i == 6) {
per.moverPersonaje(-per.velocidad, per.velocidad);
}
// abajo
if (p.isCollition(event.getX(), event.getY()) && i == 7) {
per.moverPersonaje(0, per.velocidad);
}
// abajo + derecha
if (p.isCollition(event.getX(), event.getY()) && i == 8) {
per.moverPersonaje(per.velocidad, per.velocidad);
}
}
}
}
return true;
}
}
Gracias.