嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
如果需要太阳,地球图片,下载好了放到一个名为res的文件夹里,取名sun.png, earth.png
class Animation(QPropertyAnimation):
'''
动画类
'''
def __init__(self, target, prop):
'''
target, prop这个两个参数分别对应:动画的产生对象和setter
'''
super(Animation, self).__init__(target, prop)
def updateCurrentTime(self, currentTime):
'''
currentTime(此属性保存动画的当前时间和进度)总是在变化的。
每次动画的currentTime更改时,都会调用updateCurrentTime()函数
'''
self.m_path = QPainterPath()
if self.m_path.isEmpty():
end = self.endValue()
start = self.startValue()
# endValue()、startValue()分别表示动画的结束值和起始值
self.m_path.addEllipse(QRectF(start, end))
# 在指定的boundingRectangle内创建一个椭圆,这里是QRectF(start, end),并将其作为封闭的子路径添加到painter路径中。
dura = self.duration()
progress = (((currentTime - 1) % dura) 1) / float(dura)
# duration()此属性保存动画的持续时间(以毫秒为单位)。 默认持续时间为250毫秒。progress则描绘了当前的完成比率。
easedProgress = self.easingCurve().valueForProgress(progress)
if easedProgress > 1.0:
easedProgress -= 1.0
elif easedProgress < 0:
easedProgress = 1.0
# 返回进度缓和曲线的有效进度。 进度必须介于0和1之间,而返回的有效进度可能超出这些范围。大于1就减1,小于0就加1。
pt = self.m_path.pointAtPercent(easedProgress)
# 返回当前路径的百分比easedProgress处的点。
# 参数easedProgress必须介于0和1之间。当存在曲线时,百分比参数被映射到贝塞尔方程的t参数。
self.updateCurrentValue(pt)
# 每次动画的当前值更改时,都会调用updateCurrentValue()。pt参数是新的当前值。没有这个函数动画动不了。
self.valueChanged.emit(pt)
def startAnimation(self, startx, starty, endx, endy, duration):
'''
setStartValue()、setEndValue()分别表示设置动画的起止位置,setDuration()设置动画的运行时间。
'''
self.setStartValue(QPointF(startx, starty))
self.setEndValue(QPointF(endx, endy))
self.setDuration(duration)
self.setLoopCount(-1)
# 值为-1时,动画将永远循环直至停止
self.start()
# 开始运行动画