我正在Win7 64上使用Kivy1.9.0和Python2.7。
我试图动画一个小部件从当前位置移动到一个特定的位置。在将Widget元素添加到屏幕上之后,我启动了动画,但是什么也没有发生,我期望Widget根据动画位置移动。代码如下:
projectile = Widget(pos=(self._posX + self._projectile_x, self._posY + self._projectile_y))
with projectile.canvas:
Ellipse(pos=projectile.pos, size=(10,10))
self.add_widget(projectile)
anim = Animation(x=100, y=100)
anim.start(projectile)
小椭圆小部件不移动,它只是出现在指定的坐标。如果我将Widget对象替换为for,例如,一个按钮对象,动画可以正常工作。
您知道为什么会发生这种情况吗?
谢谢
所以,据我所知,当创建一个Widget对象时,Kivy并没有像对Button或其他更复杂的Widget类型那样进行绑定。因此,一个解决方案可以是:
1:就像Yoas所说的那样,用kv语言创建对象。这有一个缺点,那就是它强迫你用kv来完成其余的工作,使之保持一致。在kv中有它们的好处是kivy为你绑定了所有属性。或
2: 自己绑定属性。缺点是您必须盲目地进行绑定,因为您永远不知道在不同情况下使用的属性是什么。
在我的特定案例中,我假设只有pos属性被更改,因为我使用的动画对象只更改了小部件的位置。为了进行绑定,我为小部件创建了一个类,以便更清楚地管理它。
之后:
然后我使用了投射对象而不是默认的小部件:
^{pr2}$现在很好了,谢谢你的提示
当你用python做的时候椭圆.pos没有绑定到射弹.pos在
如果你在kv-lang中也这样做,它会很好的工作
相关问题 更多 >
编程相关推荐