资源简介
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动画框架设计角色的二维动画二
- qt制作的银行管理系统
- Windows下 QT 5 调用 大华 SDK 实现摄像头
- Trojan-Qt5-Windows.zip
- minidump_stackwalk 执行档
- FeiQ发布版源代码修复版(QT5).zip
- Qt4闹钟
- 需要:libQt5WebKitWidgets.so.5()(64bi
- QT实现日志文件备份功能(源码
- QT4.8做的五彩贪吃蛇游戏
- 超炫button按钮动画效果
- 流浪地球-安卓大屏导航开机动画
- qt在vs2017中的插件
- BadApple源码
- gif动态彩图转化黑白动画简单图形识
- unity anima2d
- QT4 设置字体
- lavfilter-0.70.2 windows下的解码器
- 转盘跑马灯
- 零基础学QT4编程.pdf
- Qt5.10 GUI完全参考手册(强烈推荐)
- qt登陆界面36423
- 《Unity Animation Essentials》《Unity游戏动
- build-HuntPlane-qt5_1_0rel_static-Release.zip
- 安卓动画效果相关-SpringIndicator-bezie
- QT开发的电力组态系统
- Qt GUI 图片格式转换器源码
- QT属性表改变值操作demo
- Qt Qss 效果呈现器。Qt控件样式预览器
- 国内首篇利用freetype的跨平台truetype字
评论
共有 条评论