0

アプリが最初に読み込まれたときにアニメーションを開始しようとしています。ローディング画面が閉じた直後のIE。「on_enter」イベントにうんざりしていますが、うまくいかないようです。助けていただければ幸いです。

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.animation import Animation
from kivy.properties import ListProperty
from kivy.core.window import Window
from random import random
from kivy.graphics import Color, Rectangle

Builder.load_string('''
<Root>:
AnimRect:
    pos: 500, 300
<AnimRect>:
on_enter: self.start_animation
canvas:
    Color:
        rgba: 0, 1, 0, 1
    Rectangle:
        pos: self.pos
        size: self.size
''')

class Root(Widget):
pass

class AnimRect(Widget):
    def anim_to_random_pos(self):
        Animation.cancel_all(self)
        random_x = random() * (Window.width - self.width)
        random_y = random() * (Window.height - self.height)

        anim = Animation(x=random_x, y=random_y,
                     duration=4,
                     t='out_elastic')
        anim.start(self)

    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            self.anim_to_random_pos()

    def start_animation(self, touch):
        if self.collide_point(*touch.pos):
             self.anim_to_random_pos()

runTouchApp(Root())

エラーの印刷画面

4

2 に答える 2

0

on_enterメソッドは ではなく で定義されていScreenますWidget。その長方形を画面に配置し (Rootウィジェットはここでは画面である必要があります)、画面のon_enterイベントが発生したら、長方形のアニメーションを開始します。

また、間違って呼び出しています。関数呼び出しには括弧を含める必要があります。つまりon_enter: self.start_animation()

于 2016-09-12T17:42:41.980 に答える