Pyglet зависает во время обновления функции - PullRequest
0 голосов
/ 04 декабря 2018

Я относительно новичок в Pyglet, и у меня есть эта функция, которая запускается при

self.animation_complete = False 

и которая управляется внешними функциями.

Теперь эта функция работает идеально с первого раза.

def animate_board(self, dt):
    if not self.animation_complete:
        if not self.flag1 and not self.flag2:
            # Animate Tiles Fade
            for vector in self.animate_tiles_move:
                if self.sprites[vector[0]][vector[1]].scale > 0:
                    self.sprites[vector[0]][vector[1]].scale -= dt * 7.25
                else:
                    self.flag1 = True
                    self.sprites[vector[0]][vector[1]] = None

        elif self.flag1 and not self.flag2:
            # Delay
            def trig(dt):
                self.flag2 = True
                print(self.sprites)
            pyglet.clock.schedule_once(trig, 0.05)

        elif self.flag2 and self.flag1:
        # Animate New Tiles
            for vector in self.animate_tiles:
                if self.sprites[vector[0]][vector[1]] == None and self.board_status[vector[0]][vector[1]] is not None:
                    self.sprites[vector[0]][vector[1]] = pyglet.sprite.Sprite(self.assets[self.board_status[vector[0]][vector[1]]],
                                                            x = 253 + (88 * vector[1]) + 44, 
                                                            y = 768 - (287 + (88 * vector[0])) + 44,
                                                            batch = self.batch)
                    self.sprites[vector[0]][vector[1]].scale = 0
            for vector in self.animate_tiles:
                if self.sprites[vector[0]][vector[1]].scale < 1:
                    self.sprites[vector[0]][vector[1]].scale += dt * 7.25
                else:
                    self.flag = True
                    self.sprites[vector[0]][vector[1]].scale = 1

        if self.flag:
            self.animate_tiles = []
            self.animate_tiles_move = []
            self.animation_complete = True
            self.flag1 = False
            self.flag2 = False
            self.wait_input = False
    .
    .
    .
pyglet.clock.schedule_interval(animate_board, 1 / 60)
pyglet.app.run()

Но при втором запуске первая часть кода запускается только один раз, а затем окно останавливается, как будто ничего не выполняется.Я проверил переменные, чтобы увидеть, будет ли это так, как я хотел, и это выглядит нормально.Я понятия не имею, как эта вещь зависает в середине анимации.Как мне это исправить?

...