Magic_Game/Easy2D/Transition/ETransitionFade.cpp

40 lines
939 B
C++
Raw Normal View History

#include "..\etransitions.h"
#include "..\eactions.h"
#include "..\emanagers.h"
e2d::ETransitionFade::ETransitionFade(float fadeOutDuration, float fadeInDuration)
: m_fFadeOutDuration(fadeOutDuration)
, m_fFadeInDuration(fadeInDuration)
{
}
2017-10-21 19:09:31 +08:00
void e2d::ETransitionFade::_setTarget(EScene * prev, EScene * next, bool & transitional)
{
2017-10-21 19:09:31 +08:00
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
next->getRoot()->setOpacity(0);
// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
auto action1 = new EActionFadeOut(m_fFadeOutDuration);
if (prev)
{
action1->setTarget(prev->getRoot());
}
// <20>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-21 19:09:31 +08:00
auto action2 = new EActionFadeIn(m_fFadeInDuration);
action2->setTarget(next->getRoot());
// <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-21 19:09:31 +08:00
auto action3 = new EActionCallback([&, prev, next] {
transitional = false;
2017-10-21 19:09:31 +08:00
// <20><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>״̬
if (prev)
{
prev->getRoot()->setOpacity(1);
}
next->getRoot()->setOpacity(1);
});
// <20><><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-21 19:09:31 +08:00
EActionManager::addAction(new EActionSequence(3, action1, action2, action3));
}