es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo mover una imagen en Kivy solo cuando se presiona la imagen.

Estoy creando un juego en Kivy y me gustaría que una imagen se mueva solo cuando se presiona la imagen, pero actualmente, la imagen se mueve si se presiona en cualquier lugar de la pantalla. ¡A continuación está mi código!

main.py

class Ball(Image):
velocity = NumericProperty(0)

def on_touch_down(self, touch):
    self.source = "icons/ball.png"
    self.velocity = 275
    super().on_touch_down(touch)

def on_touch_up(self, touch):
    self.source = "icons/ball.png"
    super().on_touch_up(touch)

class MainApp(App):
GRAVITY = 300

def move_ball(self, time_passed):
    ball = self.root.ids.game_screen.ids.ball
    ball.y = ball.y + ball.velocity * time_passed
    ball.velocity = ball.velocity - self.GRAVITY * time_passed

main.kv

Ball:
source: “icons/ball.png”
size_hint: None, None
size: 500, 500
pos_hint: {“center_x”: 0.5}
id: ball

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que la imagen se mueva solo cuando se presione la imagen, necesitas modificar el método on_touch_down de la clase Ball. Actualmente, establece la velocidad de la pelota y llama al método super cada vez que hay un evento de toque. Para hacer que la imagen solo se mueva cuando se presiona, necesitas comprobar si el evento de toque está dentro de los límites de la imagen.

    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos): # comprueba si el toque está dentro de los límites de la imagen
            self.source = "icons/ball.png"
            self.velocity = 275
        super().on_touch_down(touch)
    

    Con esta modificación, la imagen solo se moverá cuando ocurra un evento de toque dentro de los límites de la imagen.

Comments are closed.