Я относительно новичок в 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()
Но при втором запуске первая часть кода запускается только один раз, а затем окно останавливается, как будто ничего не выполняется.Я проверил переменные, чтобы увидеть, будет ли это так, как я хотел, и это выглядит нормально.Я понятия не имею, как эта вещь зависает в середине анимации.Как мне это исправить?