【发布时间】:2017-05-14 05:38:36
【问题描述】:
我正在学习使用 Kivy,因此我浏览了 Pong 教程并开始修改代码。所以,我移除了除了弹跳球之外的所有东西,并决定按需生成多个球。我遇到的问题是,虽然我可以在应用程序已经运行时将球放置在我想要的位置(例如,在触摸时添加球可以正常工作),但是当我在应用程序 build() 中添加球时,它们没有得到放置正确。这是我的代码。接触的球,正确地从中心开始。但是在 build() 中添加的球是从左下角开始的。为什么?我想添加更多具有不同属性的移动小部件,但我似乎无法弄清楚如何将它们放在应用程序启动时。
#:kivy 1.0.9 : 帆布: 椭圆: pos: self.center 尺寸: 10, 10 : 尺寸:50、50 帆布: 椭圆: pos: self.pos 尺寸:self.size 从随机导入 randint 从 kivy.app 导入应用程序 从 kivy.uix.widget 导入小部件 从 kivy.properties 导入 NumericProperty、ReferenceListProperty、ListProperty 从 kivy.vector 导入向量 从 kivy.clock 导入时钟 类世界(小部件): 代理 = ListProperty() 定义添加(自我): 代理 = 代理() agent.center = self.center agent.velocity = Vector(4, 0).rotate(randint(0, 360)) self.agents.append(代理) self.add_widget(代理) def on_touch_down(自我,触摸): self.add() 定义更新(自我,dt): 对于 self.agents 中的代理: 代理.move() 如果 agent.y self.height: agent.velocity_y *= -1 如果 agent.x self.width: agent.velocity_x *= -1 类代理(小部件): 速度_x = NumericProperty(0) 速度_y = NumericProperty(0) 速度 = ReferenceListProperty(velocity_x, velocity_y) def 移动(自我): self.pos = 矢量(*self.velocity)+ self.pos WorldApp 类(应用程序): 定义构建(自我): 世界=世界() # 默认添加一个球 世界.add() Clock.schedule_interval(world.update, 1.0/60.0) 回归世界 如果 __name__ == '__main__': WorldApp().run()【问题讨论】: