资源简介
Qt的动画框架是Qt4.6新添加的一个重要的特性,有了它,开发人员可以制作激动人心的动画界面,而不必局限于单调的固定窗口了,可以说,这是其它界面库少见的功能,带来的则是Qt的另一大优势。最近我花了大概三、四天的时间研究Qt动画框架的内容,这让我感到Qt人员精心的设计给了我们一套非常规范并且易懂的代码,如果另外的一名开发者也对Qt动画框架有所了解,那么他可以毫不费力地看懂我的代码,并且从代码中了解设计思想。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include “Character.h“
/*---------------------------------------------------------------------------*/
Character::Character( const QString& fileName Gameobject* parent
QWidget* pWidget ): Gameobject( parent )
{
m_AnimateTime = 1000;// 即1秒
m_pWidget = pWidget;
m_Image.load( fileName ); // 载入图片
m_frameRect.setRect( 0 0 m_Image.width( ) / 4 m_Image.height( ) / 4 );
SetDirection( _Right_ ); // 朝向右
Init( );
}
/*---------------------------------------------------------------------------*/
void Character::paint( QPainter* pPainter const QstyleOptionGraphicsItem* pOption
QWidget* pWidget )
{
pPainter->drawPixmap( QPoint( 0 -16 ) m_Image m_frameRect );
Gameobject::paint( pPainter pOption pWidget );
}
/*---------------------------------------------------------------------------*/
QRectF Character::boundingRect( void ) const
{
return QRect( 0 -16 32 48 );// 没有其它特殊的效果将返回帧框
}
/*---------------------------------------------------------------------------*/
void Character::SetDirection( int dir )
{
int rectY = 2;
switch ( dir )
{
case _Up_: rectY = 3; break;
case _Down_: rectY = 0; break;
case _Left_: rectY = 1; break;
case _Right_: rectY = 2; break;
}
m_frameRect = QRect( m_frameRect.x( )
rectY * m_Image.height( ) / 4
m_frameRect.width( )
m_frameRect.height( ) );
}
/*---------------------------------------------------------------------------*/
static qreal OneEasingFunction( qreal progress )
{
Q_UNUSED( progress )
return 1.0;
}
/*---------------------------------------------------------------------------*/
void Character::SetframeAnimation( int dir )
{
int rectY = 2;
switch ( dir )
{
case _Up_: rectY = 3; break;
case _Down_: rectY = 0; break;
case _Left_: rectY = 1; break;
case _Right_: rectY = 2; break;
}
QRect rect[4];
QEasingCurve curve( QEasingCurve::Custom );
curve.setCustomType( OneEasingFunction );
for ( int i = 0; i < 4; ++i )
{
rect[i] = QRect( m_frameRect.width( ) * i rectY * m_Image.height( ) / 4
m_frameRect.width( ) m_frameRect.height( ) );
}
for ( int i = 0; i < 4; ++i )
{
m_pFPA[i]->setStartValue( rect[i] );
m_pFPA[i]->setEndValue( rect[( i + 1 ) % 4] );
m_pFPA[i]->setEasingCurve( curve );
m_pFPA[i]->setDuration( m_AnimateTime / 4 );
}
}
/*---------------------------------------------------------------------------*/
void Character::SetPosAnimation( int dir )// 设定位置动画
{
QPointF point = pos( ) deltaPt;
switch ( dir )
相关资源
- 酒店管理系统基于Qt Creator5)
- CSMA/CD等动画演示加源代码
- vtk QT做的三维地质可视化系统2of2
- 汇编语言实例
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- MFC中OpenGL面和体的绘制以及动画效果
- QT,JPEG解码源代码(已完成)
- Quest3D 2个动画相机切换实例
- Qt 播放音频文件
- Qt 读取16进制的data文件
- 原创数据结构Flash演示动画46个算法演
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- 小狗风车动画(.fla)
- ADAS功能动画ACC/AEB/IPA/BSW/LDW等)
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- js+css3猫头鹰眼睛跟随鼠标指针转动动
评论
共有 条评论