Kivyを使用してゲームをコーディングしています。アニメーション コードを配置する Screen クラスがあります。これは通常のゲームではなく、複数の画面に似ており、それぞれに独自のアニメーションがあり、異なる画面に移動するためのボタン コマンドがあります。
問題なく動作しますが、このようなクラスをさらに作成してすべてを 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))
私は何を間違っていますか?また、これを行う別の方法についてのアイデアも受け付けています。