91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8.48MB
    文件類型: .7z
    金幣: 1
    下載: 0 次
    發布日期: 2023-10-08
  • 語言: 其他
  • 標簽: Qt??動畫??

資源簡介

原博客地址: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?????{
????????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

評論

共有 條評論