如何让kivy小部件暂停

how to make kivy widgets make a pause

我想用两个小部件制作一个小程序来学习一些关于使用kivy开发游戏的东西。 一个 Widget 应该 运行 随机围绕屏幕,另一个静止不动。 现在我想找到一种方法来实现一个 "pause button" 至极应该创建一个 "pause modus",如果玩家想要休息一下,游戏的所有小部件都会停止做任何事情。 我试图 google 它,但我没有找到任何东西。 所以我想问问是否有人知道这样的功能? 这是我的代码:

from kivy.base import runTouchApp
from kivy.lang import Builder

from random import random

from kivy.uix.widget import Widget

from kivy.clock import Clock
from kivy.animation import Animation

from kivy.properties import ListProperty
from kivy.core.window import Window
Builder.load_string('''
<Root>:
    ClockRect:
        pos: 300, 300
    AnimRect:
        pos: 500, 300

<ClockRect>:
    canvas:
        Color:
            rgba: 10, 0, 0, 1
        Rectangle:
            pos: self.pos
            size: self.size
<AnimRect>:
    canvas:
        Color:
            rgba:0, 20, 0, 1
        Rectangle:
            pos: self.pos
            size: self.size
''')

class Root(Widget):
    pass

class ClockRect(Widget):

    velocity = ListProperty([10, 15])
    def __init__(self, **kwargs):
        super(ClockRect, self).__init__(**kwargs)
        Clock.schedule_interval(self.Update, 1/60.)

    def Update(self, *args):
        self.x += self.velocity[0]
        self.y += self.velocity[1]

        if self.x < 0 or (self.x + self.width) > Window.width:
            self.velocity[0] *= -1
        if self.y < 0 or (self.y + self.height) > Window.height:
            self.velocity[1] *= -1
    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            print 'es geht'

class AnimRect(Widget):


    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            pass#if this funktion is executed, I want to pause the game

runTouchApp(Root())

总的来说,我对 Kivy 和图形编程还很陌生,但我设法让它停止了。希望你能更进一步:

我替换了你的台词:

Clock.schedule_interval(self.Update, 1/60.)

用这两行:

self.My_Clock = Clock
self.My_Clock.schedule_interval(self.Update, 1/60.)

然后我将以下行添加到您的 'def on_touch_down' 方法的顶部:

self.My_Clock.unschedule(self.Update)