Я кодирую игру с помощью Kivy. У меня есть класс Screen, где я помещаю свой код анимации. Это не обычная игра, она больше похожа на несколько экранов, каждая со своей собственной анимацией, с командами кнопок для перехода назад и вперед на разные экраны.Как справиться с анимацией спрайтов в Kivy
Это работает нормально, но когда я делаю больше классов, подобных этому, и помещаю все это в ScreenManager, анимация прерывается случайными белыми экранами.
class Pas(Screen):
def __init__(self, **kwargs):
super(Pas, self).__init__(**kwargs)
Clock.schedule_interval(self.update, 1/60.0)
self.ani_speed_init = 15
self.ani_speed = self.ani_speed_init
self.ani = glob.glob("img/pas_ani*.png")
self.ani.sort()
self.ani_pos = 0
self.ani_max = len(self.ani)-1
self.img = self.ani[0]
self.update(1)
back = Button(
background_normal=('img/back-icon.png'),
background_down=('img/back-icon.png'),
pos=(380, 420))
self.add_widget(back)
def callback(instance):
sm.current = 'game'
back.bind(on_press=callback)
def update(self, dt):
self.ani_speed -= 1
if self.ani_speed == 0:
self.img = self.ani[self.ani_pos]
self.ani_speed = self.ani_speed_init
if self.ani_pos == self.ani_max:
self.ani_pos = 0
else:
self.ani_pos += 1
with self.canvas:
image = Image(source=self.img, pos=(0, 0), size=(320, 480))
Что я делаю неправильно? Я также принимаю идеи за другой способ сделать это.
'' Кроме того, kivy может управлять gifs ... "' спасибо, и у вас есть ссылка, объясняющая более подробную информацию об этой функции kivy? – ecoe
просто используйте gif как источник для виджета Image, он будет работать, есть свойства для управления скоростью игры и повторения, все это в официальной документации. – Tshirtman