QGraphicsItemAnimation 在每个 QTimeLine 循环后暂停
QGraphicsItemAnimation pauses after every QTimeLine loop
QGraphicsBubbleItem::QGraphicsBubbleItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parentItem)
: QGraphicsEllipseItem(x, y, width, height, parentItem)
{
timer = new QTimeLine(3000);
timer->setFrameRange(0, 100);
//timer->setLoopCount(3);
connect(timer, &QTimeLine::finished, timer, &QTimeLine::start);
animation = new QGraphicsItemAnimation;
animation->setItem(this);
animation->setTimeLine(timer);
animation->setTranslationAt(0, (width/2)*(-1), (height/2)*(-1));
animation->setRotationAt(0.5, 180);
animation->setRotationAt(1, 360);
timer->start();
}
动画还有更多内容,但我已将代码简化为显示问题的部分。项目已绘制并按应有的方式旋转,但在每次循环后都会停止一段时间。
默认情况下,QTimeLine 使用曲线设置为:
QTimeLine::EaseInOutCurve
表示该值开始缓慢增长,然后稳定运行,然后再次缓慢增长。尝试 setting the curve shape 到线性:
QTimeLine::LinearCurve
QGraphicsBubbleItem::QGraphicsBubbleItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parentItem)
: QGraphicsEllipseItem(x, y, width, height, parentItem)
{
timer = new QTimeLine(3000);
timer->setFrameRange(0, 100);
//timer->setLoopCount(3);
connect(timer, &QTimeLine::finished, timer, &QTimeLine::start);
animation = new QGraphicsItemAnimation;
animation->setItem(this);
animation->setTimeLine(timer);
animation->setTranslationAt(0, (width/2)*(-1), (height/2)*(-1));
animation->setRotationAt(0.5, 180);
animation->setRotationAt(1, 360);
timer->start();
}
动画还有更多内容,但我已将代码简化为显示问题的部分。项目已绘制并按应有的方式旋转,但在每次循环后都会停止一段时间。
默认情况下,QTimeLine 使用曲线设置为:
QTimeLine::EaseInOutCurve
表示该值开始缓慢增长,然后稳定运行,然后再次缓慢增长。尝试 setting the curve shape 到线性:
QTimeLine::LinearCurve