【发布时间】:2012-09-29 00:24:16
【问题描述】:
我正在使用漂亮的 Kivy 框架来编写适用于 Android 的游戏。 我正在尝试创建一个时钟回调以每秒运行 60 次指定的代码(用于绘制)。
由于某种原因,我在 Kivy 时钟事件中绘制的任何内容都不会被绘制到屏幕上。为了尽可能消除所有变量,我采用了以下示例代码:
import kivy
kivy.require('1.0.6')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse
class MyPaintWidget(Widget):
def on_touch_down(self, touch):
with self.canvas:
Color(1, 1, 0)
d = 30.
Ellipse(pos=(touch.x - d/2, touch.y - d/2), size=(d, d))
class MyPaintApp(App):
def build(self):
return MyPaintWidget()
if __name__ == '__main__':
MyPaintApp().run()
这很好用 - 当我点击屏幕时,它会在那里放置一个黄色圆圈。 但是,当我这样修改它时:
import kivy
kivy.require('1.0.6')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse
from kivy.clock import Clock
class MyPaintWidget(Widget):
def update(self, t):
with self.canvas:
Color(1, 1, 0)
d = 30.
Ellipse(pos=(200 - d/2, 200 - d/2), size=(d, d))
class MyPaintApp(App):
def build(self):
m = MyPaintWidget()
Clock.schedule_interval(m.update, 1.)
return m
if __name__ == '__main__':
MyPaintApp().run()
没有任何东西被绘制到屏幕上。为什么? 编辑:我发现它只有在我点击它时才会绘制到屏幕上。仍然没有用 - 我需要将它用于游戏的事件循环! 我正在使用 Kivy 1.4.0(第二个最新版本)和 Ubuntu。这在 Android 上也无法正常工作。
【问题讨论】:
-
您使用的是最新版本的 kivy(最新版本还是 git)?我尝试了您的第二个脚本,它对我有用。另外,你用的是什么平台?
-
我在 Kivy 1.4.0、Windows、Python 2.7 上,第二个脚本允许我右键单击,然后它会在鼠标周围绘制一个圆圈,直到我释放按钮。我可以左键单击选择要移动的圆圈,或者只需单击并释放它们就会消失。