所以我的问题是,每当我通过create_game()方法创建一个新游戏时,会发生一些奇怪的事情,一切都开始移动速度快2倍,我认为这是由于时钟问题,但我不确定。我的问题是我能做些什么来让它以正常的速度运行。这是代码:
def create_game(self):
for i in range(1,11):
for j in range(15):
brick = Brick(pos = [self.width/15*j,self.height - self.height/30*i - self.height/6], size_hint = [1/15,1/30] )
a = random.randint(1,3)
if(a!=3):
self.brick_container.add_widget(brick)
ball = Ball(pos = (self.paddle.center_x, self.paddle.height + 1), size_hint = [None,None], size = [self.width/50,self.width/50])
self.ball_container.add_widget(ball)
self.game_on_pause = True
self.update()
def serve_ball(self):
self.ball_container.children[0].velocity = Vector(3,3)
if(len(self.ball_container.children) == 0):
self.level += 1
self.brick_container.clear_widgets()
self.ball_container.clear_widgets()
self.bonus_container.clear_widgets()
Clock.unschedule(self.update)
self.create_game()
Clock.schedule_once(self.update, 1.0 / 60.0)
答案 0 :(得分:0)
将 Clock.schedule_once 保存到变量事件,并将Clock.unschedule(self.update)
替换为self.event.cancel()
if(len(self.ball_container.children) == 0):
...
self.bonus_container.clear_widgets()
self.event.cancel()
self.create_game()
self.event = Clock.schedule_once(self.update, 1.0 / 60.0)
另一种方法是使用Trigger events。
每次调用trigger()时,它都会安排一次调用 打回来。如果已经安排,则不会重新安排。
self.trigger = Clock.create_trigger(my_callback, 1.0 / 60.0)
self.trigger() # schedule it
self.trigger.cancel() # cancel / unschedule it