动画的第一次尝试:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.animation import Animation
from kivy.uix.label import Label
class TestApp(App):
def build(self):
self.box=BoxLayout(orientation='vertical')#главный бокс
self.box2=BoxLayout(orientation='vertical')#анимация этого бокса и будет происходить по индексу
self.box2.add_widget(Label(text='test animation',size_hint=(1,.1)))
self.box.add_widget(self.box2)
#кнопки управления анимацией
self.box.add_widget(Button(text='left',on_press=self.pressing,size_hint=(1,.1)))
self.box.add_widget(Button(text='right',on_press=self.pressing,size_hint=(1,.1)))
return self.box
def pressing(self,instance):#собственно анимация)))
if instance.text=='left':
anim=Animation(x=-1000,t='out_elastic',duration=1)
anim.start(self.box.children[-1])#обращаюсь к объекту по индексу
if instance.text=='right':
anim=Animation(x=0,t='out_elastic',duration=1)
anim.start(self.box.children[-1])
TestApp().run()
混淆一件事 - 我一开始尝试为self.box2指定屏幕后面的位置,但它仍然在中心,但是当我调用动画函数时,标签改变了它的位置。想法是Label小部件首先位于屏幕后面,然后根据游戏情况更新并再次返回中心。作为一个选项,您可以添加一个方法,据我了解,只有在返回后才能更改标签的位置。
使用floatlayout当然在这方面更容易,但是如果你在不同屏幕分辨率的不同设备上尝试应用程序,那么我的widget就会出现在不太漂亮的位置。
简而言之,我仍然练习,这就是发生的事情。也许不是很胜任,但它可以工作并回答有关动画和其他小部件的放置等问题。