如何使kivy小部件暂停

时间:2015-05-16 19:37:47

标签: android python python-2.7 kivy

我想制作一个带有两个小部件的小程序,用kivy学习一些关于游戏开发的东西。 一个Widget应该随机围绕屏幕运行,另一个Widget静止不动。 现在我想找到一种方法来实现一个“暂停按钮”,它应该创建一个“暂停模式”,游戏中的所有小部件都会停止做任何事情,如果玩家想要休息或什么的话。 我试着谷歌,但我没有找到任何东西。 所以我想问一下alredy是否知道这样的功能? 这是我的代码:

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())

1 个答案:

答案 0 :(得分:2)

我对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)