Ejemplo n.º 1
0
EnemyShip::EnemyShip()
{
    QGraphicsItem *spaceshipTail = new EnemyShipTail(this);
    QGraphicsItem *oneWing = new EnemyShipWing1(this);
    QGraphicsItem *secondWing = new EnemyShipWing2(this);
    QGraphicsItem *spaceshipBody = new EnemyShipBody(this);
    QGraphicsItem *spaceshipWindow = new EnemyShipWindow(this);

    spaceshipTail->setPos(602, 293);
    oneWing->setPos(565, 310);
    secondWing->setPos(623, 310);
    spaceshipBody->setPos(600, 300);
    spaceshipWindow->setPos(607, 332);

    timeline = new QTimeLine;

    QGraphicsItemAnimation *tailAnim = new QGraphicsItemAnimation;
    tailAnim->setItem(spaceshipTail);
    tailAnim->setTimeLine(timeline);
    tailAnim->setTranslationAt(0, 20, 0);
    tailAnim->setTranslationAt(1, -20, 0);

    QGraphicsItemAnimation *oneWingAnim = new QGraphicsItemAnimation;
    oneWingAnim->setItem(oneWing);
    oneWingAnim->setTimeLine(timeline);
    oneWingAnim->setTranslationAt(0, 20, 0);
    oneWingAnim->setTranslationAt(1, -20, 0);

    QGraphicsItemAnimation *secondWingAnim = new QGraphicsItemAnimation;
    secondWingAnim->setItem(secondWing);
    secondWingAnim->setTimeLine(timeline);
    secondWingAnim->setTranslationAt(0, 20, 0);
    secondWingAnim->setTranslationAt(1, -20, 0);

    QGraphicsItemAnimation *bodyAnim = new QGraphicsItemAnimation;
    bodyAnim->setItem(spaceshipBody);
    bodyAnim->setTimeLine(timeline);
    bodyAnim->setTranslationAt(0, 20, 0);
    bodyAnim->setTranslationAt(1, -20, 0);

    QGraphicsItemAnimation *windowAnim = new QGraphicsItemAnimation;
    windowAnim->setItem(spaceshipWindow);
    windowAnim->setTimeLine(timeline);
    windowAnim->setTranslationAt(0, 20, 0);
    windowAnim->setTranslationAt(1, -20, 0);

    timeline->setUpdateInterval(1000/25);
    timeline->setCurveShape(QTimeLine::SineCurve);
    timeline->setLoopCount(0);
    timeline->setDuration(2000);
    timeline->start();

}
void tst_QGraphicsItemAnimation::checkReturnedLists()
{
    QGraphicsItemAnimation animation;

    animation.setPosAt(1.0, QPointF(10, -10));
    animation.setPosAt(0.5, QPointF(5, -5));

    animation.setRotationAt(0.3, 2.3);
    animation.setTranslationAt(0.3, 15, 15);
    animation.setScaleAt(0.3, 2.5, 1.8);
    animation.setShearAt(0.3, 5, 5);

    QCOMPARE(animation.posList().at(0), (QPair<qreal, QPointF>(0.5, QPointF(5, -5))));
    QCOMPARE(animation.posList().at(1), (QPair<qreal, QPointF>(1.0, QPointF(10, -10))));
    QCOMPARE(animation.rotationList().at(0), (QPair<qreal, qreal>(0.3, 2.3)));
    QCOMPARE(animation.translationList().at(0), (QPair<qreal, QPointF>(0.3, QPointF(15, 15))));
    QCOMPARE(animation.scaleList().at(0), (QPair<qreal, QPointF>(0.3, QPointF(2.5, 1.8))));
    QCOMPARE(animation.shearList().at(0), (QPair<qreal, QPointF>(0.3, QPointF(5, 5))));

    QCOMPARE(animation.posList().size(), 2);
    QCOMPARE(animation.rotationList().size(), 1);
    QCOMPARE(animation.translationList().size(), 1);
    QCOMPARE(animation.scaleList().size(), 1);
    QCOMPARE(animation.shearList().size(), 1);
}
void tst_QGraphicsItemAnimation::overwriteValueForStep()
{
    QGraphicsItemAnimation animation;

    for (int i=0; i<3; i++){
        animation.setPosAt(0.3, QPointF(3, -3.1));
        animation.setRotationAt(0.3, 2.3);
        animation.setTranslationAt(0.3, 15, 15);
        animation.setScaleAt(0.3, 2.5, 1.8);
        animation.setShearAt(0.3, 5, 5);

        QCOMPARE(animation.posList().size(), 1);
        QCOMPARE(animation.rotationList().size(), 1);
        QCOMPARE(animation.translationList().size(), 1);
        QCOMPARE(animation.scaleList().size(), 1);
        QCOMPARE(animation.shearList().size(), 1);
    }
}