मैं किवी में एक गेम बना रहा हूं और मैं चाहता हूं कि छवि केवल तभी चलती है जब छवि को दबाया जाता है, लेकिन वर्तमान में, स्क्रीन में कहीं भी दबाए जाने पर छवि चलती है। नीचे मेरा कोड है!

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

मुख्य.केवी

Ball:
        source: "icons/ball.png"
        size_hint: None, None
        size: 500, 500
        pos_hint: {"center_x": 0.5}
        id: ball
0
Tan 26 नवम्बर 2021, 21:33

1 उत्तर

सबसे बढ़िया उत्तर

आपको यह निर्धारित करने की आवश्यकता है कि क्या press वास्तव में Image पर है। ऐसा करने के लिए आप दस्तावेज़ीकरण में बताए अनुसार collide_point()का उपयोग कर सकते हैं:

on_touch_down (), on_touch_move (), on_touch_up () किसी भी प्रकार की टक्कर नहीं करते हैं। यदि आप जानना चाहते हैं कि स्पर्श आपके विजेट के अंदर है या नहीं, तो collide_point() का उपयोग करें।

इसलिए on_touch_down() को इसमें बदलने का प्रयास करें:

def on_touch_down(self, touch):
    if self.collide_point(*touch.pos):
        self.source = "icons/ball.png"
        self.velocity = 275
    return super().on_touch_down(touch)

और on_touch_up() के समान।

0
John Anderson 26 नवम्बर 2021, 23:03
अरे, मदद के लिए धन्यवाद, लेकिन अब अगर मैं स्क्रीन के विभिन्न हिस्सों जैसे कोने में दबाता हूं तो कुछ भी नहीं होता है जो मैं चाहता था लेकिन, अगर मैं छवि के करीब नहीं दबाता हूं तो यह छवि पर बिल्कुल नहीं चलता है। मैं इसे कैसे बना सकता हूं ताकि केवल जब इसे छवि पर दबाया जाए तो यह चलता है।
 – 
Tan
27 नवम्बर 2021, 07:50