实例介绍
【实例截图】
【核心代码】
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()
# 开始运行动画
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论