QT开发中文网

QPoint pos = this->pos(); //动画还没有结束就先立马停止,防止用户不停的点击 if(pShakeAnimation->state() == QPropertyAnimation::Running) { pShakeAnimation->stop(); } pShakeAnimation->setDuration(600); pShakeAnimation->setS...

逐句解释上述代码段:

  1. QPoint pos = this->pos();:创建一个QPoint对象pos,将当前对象的位置赋值给pos。

  2. if(pShakeAnimation->state() == QPropertyAnimation::Running):检查pShakeAnimation动画是否正在运行。

  3. pShakeAnimation->stop();:如果动画正在运行,则停止它。

  4. pShakeAnimation->setDuration(600);:设置pShakeAnimation动画的持续时间为600毫秒。

  5. pShakeAnimation->setStartValue(pos);:设置动画起始值为当前位置pos。

  6. 定义变量offset并初始化为0。

  7. 定义变量dOffset并计算每帧之间的偏移量。在此例中,将总共分为30帧,因此每一帧的偏移量为1/30。

  8. 定义变量dIndex并初始化为dOffset,用于跟踪关键帧的索引位置。

  9. 循环30次(i从1到29):

a. 在每一次循环中,根据i的奇偶性确定offset的值(偶数为-10,奇数为10)。

b. 将dIndex增加dOffset,以便在[0, 1]范围内插入关键帧。

c. 使用setKeyValueAt()方法将关键帧添加到动画中,并将位置设置为当前位置加上offset构成的新点。

  1. pShakeAnimation->setEndValue(pos);:设置动画结束值为当前位置pos,以确保动画回到起始位置。

  2. pShakeAnimation->start();:启动pShakeAnimation动画。

上述代码段的目的是创建一个抖动效果的动画。它首先检查动画是否正在运行,并在需要时停止之前的动画。然后,通过使用一系列关键帧来描述动画效果,从而在短时间内使对象产生抖动效果。最后,启动该动画使其开始执行。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=9196

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?