gpt4 book ai didi

python - 如何在 Kivy 中制作重复的旋转动画?

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:04 27 4
gpt4 key购买 nike

我想制作一个可以旋转加载微调器图像的动画小部件。我查看了 Animation 类,它似乎可以完成这项工作。但是我找不到一种方法来不断地在一个方向上旋转小部件

这是我的代码:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.image import Image
from kivy.graphics import Rotate
from kivy.animation import Animation
from kivy.properties import NumericProperty

Builder.load_string('''
<Loading>:
canvas.before:
PushMatrix
Rotate:
angle: self.angle
axis: (0, 0, 1)
origin: self.center
canvas.after:
PopMatrix
''')

class Loading(Image):
angle = NumericProperty(0)
def __init__(self, **kwargs):
super().__init__(**kwargs)
anim = Animation(angle = 360)
anim += Animation(angle = -360)
anim.repeat = True
anim.start(self)


class TestApp(App):
def build(self):
return Loading()

TestApp().run()

当您启动它时,您会看到小部件在一个方向上旋转 360 度,然后旋转一圈。我如何构建动画序列,使角度不断增加或每 360 度旋转一次下降到 0?

最佳答案

您可以在 on_angle 方法中将角度设置为 0。这是一个稍微修改过的版本:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.animation import Animation
from kivy.properties import NumericProperty

Builder.load_string('''
<Loading>:
canvas.before:
PushMatrix
Rotate:
angle: root.angle
axis: 0, 0, 1
origin: root.center
canvas.after:
PopMatrix


Image:
size_hint: None, None
size: 100, 100
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
''')

class Loading(FloatLayout):
angle = NumericProperty(0)
def __init__(self, **kwargs):
super(Loading, self).__init__(**kwargs)
anim = Animation(angle = 360, duration=2)
anim += Animation(angle = 360, duration=2)
anim.repeat = True
anim.start(self)

def on_angle(self, item, angle):
if angle == 360:
item.angle = 0


class TestApp(App):
def build(self):
return Loading()

TestApp().run()

关于python - 如何在 Kivy 中制作重复的旋转动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41321832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com