Kivy时钟问题(每次都会增加一倍)

时间:2018-06-07 22:04:45

标签: python kivy

所以我的问题是,每当我通过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)

1 个答案:

答案 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