Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 14/07/11, 01:25:33
Avatar de aetsu
aetsu aetsu no está en línea
Usuario novato en la web
Mensajes: 10
 
Fecha de registro: jun 2011
Mensajes: 10
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Mantener pulsado boton

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 , aquí esta el codigo de la función onTouchEvent:
[php]
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;
}
}
[/php]

Gracias.
Responder Con Cita


  #2  
Viejo 17/07/11, 20:29:19
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Tienes que mirar los tipos de evento que te pasa el onTouchEvent. Realmente solo te notifica cuando el usuario pone el dedo encima y cuando ocurre algo como moverlo o soltarlo. Si el usuario deja el dedo puesto o el movimiento no es significativo no te debería volver a llamar al onTouchEvent, por eso se ejecuta solo una vez.

De todas formas, en general para los juegos es mejor que tengas un hilo de actualización que periódicamente actualice el estado y mire cuál fue la última dirección pulsada para actualizar las posiciones, repintar, etc.

Googleando un poco encontrarás varias páginas web poco sobre "esqueletos" para hacer juegos y cómo tratar los eventos de entrada.
Responder Con Cita
  #3  
Viejo 17/07/11, 20:31:27
Avatar de aetsu
aetsu aetsu no está en línea
Usuario novato en la web
Mensajes: 10
 
Fecha de registro: jun 2011
Mensajes: 10
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Gracias, buscaré a ver si encuentro algo.
Responder Con Cita
  #4  
Viejo 17/07/11, 20:37:24
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Empieza por ésta, está en inglés pero hasta te dice lo del onTouchEvent por ahí ;)

http://www.rbgrn.net/content/54-gett...me-development

¡Suerte con el desarrollo!
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 03:23:30 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007