我想制作一个带有两个小部件的小程序,以学习关于使用kivy进行游戏开发的一些知识。 一个部件应该随机在屏幕上移动,另一个部件保持静止。 现在我想找到一种实现“暂停按钮”的方法,它应该创建一个“暂停模式”,在此模式下,如果玩家想休息或其他事情,游戏的所有小部件都停止执行任何操作。 我试图搜索一下,但是没有找到任何可用的信息。 所以我想问问是否有人已经知道这样的功能? 以下是我的代码:
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())
PyPubSub
库(或任何Python消息传递库),让一个对象向另一个对象传递消息,表示时钟开/关。 - John C