资源简介
原博客地址: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动画框架设计角色的二维动画演
- 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字
评论
共有 条评论