资源简介
原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/8741380
上次发布demo虽然使用了大量的动画框架、有限状态机框架,但是仍有瑕疵。比如说在用户一直按下按键的时候角色会被“冻”住,但是角色的位置是移动的,这可能是使用QKeyEventTransition的一个副作用吧。在觉察到使用QKeyEventTransition不好使时,我开始着眼研究怎样将Qt按键的状态保存起来并且封装成让其余编码变得更加容易。为此我写了两篇日志。这篇日志是上篇有关按键日志的延续,也是其具体应用。
代码片段和文件信息
#include
#include
#include
#include “DirectionControl.h“
#include “Character.h“
/*---------------------------------------------------------------------------*/
Character::Character( const Gameobject* pParent ): Gameobject( pParent )
{
setobjectName( tr( “Character“ ) );
m_frameRect = QRectF( 0.0 0.0 32.0 48.0 );
m_AnimateTime = 1000;
// 创建方向控制
Control* pDirectionControl = new DirectionControl( this );
m_pActiveControl =
findChild( tr( “DirectionControl“ ) );
Q_ASSERT( m_pActiveControl != 0 );
// 初始化有限状态机
m_Machine.addState( &m_Stand );
m_Machine.addState( &m_Walk );
// 设定帧动画
m_pframeAniGrp = new QSequentialAnimationGroup;
for ( int i = 0; i < 4; ++i )
{
m_pframeAnima[i] = new QPropertyAnimation( this “frameRect“ );
m_pframeAnima[i]->setDuration( m_AnimateTime / 4 );
m_pframeAniGrp->addAnimation( m_pframeAnima[i] );
}
// 初始化和设定位置动画
m_pPosAnima = new QPropertyAnimation( this “pos“ );
m_pPosAnima->setDuration( m_AnimateTime );
// 用动画组将帧动画和位置动画结合起来
m_pParallelGrp = new QParallelAnimationGroup;
m_pParallelGrp->addAnimation( m_pframeAniGrp );
m_pParallelGrp->addAnimation( m_pPosAnima );
// 创建从stand到walk的转换(transition)
QSignalTransition* pWalkTransition = new QSignalTransition( pDirectionControl
SIGNAL( TriggerTransition( ) )
&m_Stand );
pWalkTransition->setTargetState( &m_Walk );
pWalkTransition->addAnimation( m_pParallelGrp );
// 创建从walk到stand的转换(transition)
QSignalTransition* pStandTransition = new QSignalTransition( m_pParallelGrp
SIGNAL( finished( ) )
&m_Walk );
pStandTransition->setTargetState( &m_Stand );
SetDirection( _Right_ );// 朝向右
m_Machine.setInitialState( &m_Stand );// 设置初始状态
m_Machine.start( );
}
/*---------------------------------------------------------------------------*/
Character::~Character( void )
{
}
/*---------------------------------------------------------------------------*/
void Character::Init( void )
{
}
/*---------------------------------------------------------------------------*/
void Character::Release( void )
{
}
/*---------------------------------------------------------------------------*/
void Character::Update( void )
{
m_pActiveControl->Update( );
}
/*---------------------------------------------------------------------------*/
void Character::OnCollision( void )
{
//qDebug( “OnCollision.“ );
}
/*---------------------------------------------------------------------------*/
QRectF Character::boundingRect( void ) const
{
return QR
相关资源
- 酒店管理系统基于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猫头鹰眼睛跟随鼠标指针转动动
评论
共有 条评论