修复了重置动画时的一些bug

This commit is contained in:
Nomango 2017-10-06 01:07:15 +08:00
parent da004f8691
commit 6bd05e60b9
5 changed files with 22 additions and 27 deletions

View File

@ -64,6 +64,7 @@ void ActionSequence::_reset()
{ {
action->_reset(); action->_reset();
} }
m_vActions[0]->_init();
m_nActionIndex = 0; m_nActionIndex = 0;
} }

View File

@ -2,10 +2,11 @@
ActionTwo::ActionTwo(Action * actionFirst, Action * actionSecond) : ActionTwo::ActionTwo(Action * actionFirst, Action * actionSecond) :
m_FirstAction(actionFirst), m_FirstAction(actionFirst),
m_SecondAction(actionSecond) m_SecondAction(actionSecond),
m_bFirstFinished(false)
{ {
if (m_FirstAction) m_FirstAction->retain(); m_FirstAction->retain();
if (m_SecondAction) m_SecondAction->retain(); m_SecondAction->retain();
} }
ActionTwo::~ActionTwo() ActionTwo::~ActionTwo()
@ -34,9 +35,9 @@ ActionTwo * ActionTwo::reverse(bool actionReverse) const
void ActionTwo::_init() void ActionTwo::_init()
{ {
m_FirstAction->m_pParent = m_pParent; m_FirstAction->m_pParent = m_pParent;
m_FirstAction->_init();
m_SecondAction->m_pParent = m_pParent; m_SecondAction->m_pParent = m_pParent;
m_FirstAction->_init();
} }
bool ActionTwo::_exec(LARGE_INTEGER nNow) bool ActionTwo::_exec(LARGE_INTEGER nNow)
@ -44,27 +45,16 @@ bool ActionTwo::_exec(LARGE_INTEGER nNow)
if (m_bStop) return true; if (m_bStop) return true;
if (!m_bRunning) return false; if (!m_bRunning) return false;
if (m_FirstAction) if (!m_bFirstFinished)
{ {
if (m_FirstAction->_exec(nNow)) if (m_FirstAction->_exec(nNow))
{ {
// 返回 true 表示第一个动作已经结束,删除这个 // 返回 true 表示第一个动作已经结束
// 动作,并初始化第二个动作
SafeRelease(m_FirstAction);
m_FirstAction = nullptr;
m_SecondAction->_init(); m_SecondAction->_init();
m_bFirstFinished = true;
} }
} }
else if (m_SecondAction) else if (m_SecondAction->_exec(nNow))
{
if (m_SecondAction->_exec(nNow))
{
SafeRelease(m_SecondAction);
m_SecondAction = nullptr;
return true;
}
}
else
{ {
return true; return true;
} }
@ -73,6 +63,9 @@ bool ActionTwo::_exec(LARGE_INTEGER nNow)
void ActionTwo::_reset() void ActionTwo::_reset()
{ {
if (m_FirstAction) m_FirstAction->_reset(); m_FirstAction->_reset();
if (m_SecondAction) m_SecondAction->_reset(); m_SecondAction->_reset();
m_FirstAction->_init();
m_bFirstFinished = false;
} }

View File

@ -141,7 +141,7 @@ void App::_initGraph()
TCHAR title[31]; TCHAR title[31];
GetWindowText(GetHWnd(), title, 30); GetWindowText(GetHWnd(), title, 30);
m_sTitle = title; m_sTitle = title;
m_sAppName = title; if (m_sAppName.empty()) m_sAppName = title;
} }
else else
{ {
@ -320,7 +320,7 @@ void App::_enterNextScene()
} }
else else
{ {
SafeDelete(m_CurrentScene); // ˇńÔňÉžłýľąÇ°łĄž° SafeDelete(m_CurrentScene); // ÉžłýľąÇ°łĄž°
} }
m_CurrentScene = m_NextScene; // Çл»³¡¾° m_CurrentScene = m_NextScene; // Çл»³¡¾°

View File

@ -43,7 +43,7 @@ TString FileUtils::getDefaultSavePath()
TString path = m_lpszDefaultDir; TString path = m_lpszDefaultDir;
path.append(_T("\\")); path.append(_T("\\"));
path.append(App::get()->getAppName()); path.append(App::getAppName());
#ifdef UNICODE #ifdef UNICODE
if (_waccess(path.c_str(), 0) == -1) if (_waccess(path.c_str(), 0) == -1)

View File

@ -1218,8 +1218,9 @@ public:
virtual ActionTwo * reverse(bool actionReverse = true) const; virtual ActionTwo * reverse(bool actionReverse = true) const;
protected: protected:
Action * m_FirstAction; Action * m_FirstAction;
Action * m_SecondAction; Action * m_SecondAction;
bool m_bFirstFinished;
protected: protected:
virtual void _init() override; virtual void _init() override;