2010年1月4日 星期一

Qt 4.6強大的QPropertyAnimation功能

我借用QPropertyAnimation寫了一個qgame_move的類(我會在對這個類增強),請看下面簡單的幾行就產生了2個不同的移動圖片,用qt來寫遊戲應該就更簡單了,這是Qt4.6的新功能(是從對岸博客看到的)

QPixmap birdimg=QPixmap(":/new/prefix1/Star.bmp").scaled(40,40);
QPoint p1(0, 360);//開始點
QPoint p2(310, 180);//結束點
QGame_move *a=new QGame_move(p1,p2,birdimg,ui->graphicsView);//動畫產生

QPoint p3(0, 0);
QPoint p4(310, 180);
QGame_move *a1=new QGame_move(p3,p4,birdimg,ui->graphicsView);





qgame_move.h
----------------------------------------------------------------
#ifndef QGAME_MOVE_H
#define QGAME_MOVE_H
#include <QWidget>
#include <QObject>
#include <QLabel>
#include <QPixmap>
#include <QPropertyAnimation>
#include <QSequentialAnimationGroup>
#include <QParallelAnimationGroup>
#include <QTimer>

class QGame_move : public QWidget {
Q_OBJECT
public:
QGame_move(QPoint startp,QPoint endp,QPixmap image,QWidget *parent = 0);
};

#endif // QGAME_MOVE_H
-----------------------------------------------------------------------------


qgame_move.cpp
-------------------------------------------------------------------------------

#include "qgame_move.h"

QGame_move::QGame_move(QPoint startp,QPoint endp,QPixmap image,QWidget *parent) :
QWidget(parent)
{
QLabel *bird_1=new QLabel(parent);
bird_1->setPixmap(image);
QPropertyAnimation *anim1=new QPropertyAnimation(bird_1, "pos");
anim1->setDuration(2000);
anim1->setStartValue(startp);
anim1->setEndValue(endp);
anim1->start();
}

沒有留言: