muy buenas.
tengo una duda que no puedo resolver.
es con eventos.pulsa_tecla
la idea es que quiero que un bloque se ejecute hasta que deje de pulsar la tecla,
o que ejecute el comando por un tiempo y que después siga con el actualiza
el problema puntual es que quiero golpear pero actualizar me pisa la ejecución de golpear() por estaQuieto()
(golpear ejecuta una animación)
Hola @Miguel_Miloro !
Lo más sencillo que se me ocurre es tener dos funciones conectadas a los eventos “pulsa_tecla” y “suelta_tecla”. De esa forma vas a tener control sobre los dos instantes más importantes para que tu personaje realice el golpe o pase a estar en reposo.
Para ilustrar esto, armé un ejemplo muy básico: Básicamente es un actor que hace lo siguiente, cuando se pulsa una tecla comienza a moverse a la izquierda y girar. Cuando se suelta la tecla vuelve a quedar en reposo.
Tené en cuenta que las funciones “cuando_pulsa_tecla” y “cuando_suelta_tecla” se va a ejecutar una vez, dependiendo de lo que haga el usuario. Estas funciones son ideales para comenzar una animación, reproducir sonidos o cualquier cosa que quieras que se haga una sola vez. En cambio, la función “actualizar” se ejecutará todo el tiempo, 60 veces por segundo, así que ahí lo ideal es realizar cosas incrementales como movimientos o chequeos rápidos:
# coding: utf-8
import pilasengine
pilas = pilasengine.iniciar()
class MiActor(pilasengine.actores.Actor):
def iniciar(self):
self.imagen = "aceituna.png"
self.pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)
self.pilas.eventos.suelta_tecla.conectar(self.cuando_suelta_tecla)
self.mantiene_tecla_pulsada = False
def cuando_pulsa_tecla(self, tecla):
self.mantiene_tecla_pulsada = True
self.pilas.avisar('Ha pulsado la tecla')
def cuando_suelta_tecla(self, tecla):
self.mantiene_tecla_pulsada = False
self.pilas.avisar("ha soltado la tecla")
def actualizar(self):
if self.mantiene_tecla_pulsada:
self.x -= 5
self.rotacion += 5
else:
pass
pilas.actores.vincular(MiActor)
pilas.actores.MiActor()
pilas.ejecutar()
Avisanos cualquier cosa.
Saludos!
Muchas gracias!!! , voy a intentar aplicarlo ya