去除TransitionFade的两参数构造函数

This commit is contained in:
Nomango 2018-05-22 12:59:49 +08:00
parent 24bf8e007a
commit 7920099161
2 changed files with 21 additions and 55 deletions

View File

@ -2,53 +2,28 @@
#include "..\e2dnode.h" #include "..\e2dnode.h"
e2d::TransitionFade::TransitionFade(double duration) e2d::TransitionFade::TransitionFade(double duration)
: Transition(0) : Transition(duration)
, _fadeOutDuration(max(duration / 2, 0))
, _fadeInDuration(max(duration / 2, 0))
, _fadeOutTransioning(true)
{
}
e2d::TransitionFade::TransitionFade(double fadeOutDuration, double fadeInDuration)
: Transition(0)
, _fadeOutDuration(max(fadeOutDuration, 0))
, _fadeInDuration(max(fadeInDuration, 0))
, _fadeOutTransioning(true)
{ {
} }
void e2d::TransitionFade::_init(Scene * prev, Scene * next) void e2d::TransitionFade::_init(Scene * prev, Scene * next)
{ {
Transition::_init(prev, next); Transition::_init(prev, next);
if (_outScene)
{
_fadeOutTransioning = true;
_duration = _fadeOutDuration;
}
else
{
_fadeOutTransioning = false;
_duration = _fadeInDuration;
}
_outLayerParam.opacity = 1; _outLayerParam.opacity = 1;
_inLayerParam.opacity = 0; _inLayerParam.opacity = 0;
} }
void e2d::TransitionFade::_updateCustom() void e2d::TransitionFade::_updateCustom()
{ {
if (_fadeOutTransioning) if (_delta < 0.5)
{ {
_outLayerParam.opacity = float(1 - _delta); _outLayerParam.opacity = 1 - float(_delta) * 2;
if (_delta >= 1) _inLayerParam.opacity = 0;
{
_fadeOutTransioning = false;
_duration = _fadeInDuration;
_last = Time::getTotalTime();
}
} }
else else
{ {
_inLayerParam.opacity = float(_delta); _outLayerParam.opacity = 0;
_inLayerParam.opacity = float(_delta - 0.5) * 2;
if (_delta >= 1) if (_delta >= 1)
{ {
this->_stop(); this->_stop();

View File

@ -8,7 +8,7 @@ namespace e2d
class SceneManager; class SceneManager;
// 基础过渡动作 // 场景过渡
class Transition : class Transition :
public Object public Object
{ {
@ -19,32 +19,32 @@ public:
virtual ~Transition(); virtual ~Transition();
// 场景切换动作是否结束 // 场景过渡动画是否结束
bool isDone(); bool isDone();
// Ïú»Ù¶ÔÏó // Ïú»Ù¶ÔÏó
virtual void onDestroy() override; virtual void onDestroy() override;
protected: protected:
// 初始化场景动作 // 初始化场景过渡动画
virtual void _init( virtual void _init(
Scene * prev, Scene * prev,
Scene * next Scene * next
); );
// 更新场景动作 // 更新场景过渡动画
virtual void _update(); virtual void _update();
// 更新场景动作 // 更新场景过渡动画
virtual void _updateCustom() = 0; virtual void _updateCustom() = 0;
// 渲染场景动作 // 渲染场景过渡动画
virtual void _render(); virtual void _render();
// 重置场景动作 // 重置场景过渡动画
virtual void _reset() = 0; virtual void _reset() = 0;
// 停止场景动作 // 停止场景过渡动画
virtual void _stop(); virtual void _stop();
protected: protected:
@ -62,21 +62,17 @@ protected:
}; };
// 渐变过渡
class TransitionFade : class TransitionFade :
public Transition public Transition
{ {
public: public:
TransitionFade( TransitionFade(
double duration /* 动作持续时长 */ double duration /* 动画持续时长 */
);
TransitionFade(
double fadeOutDuration, /* 前一场景淡出动作持续时长 */
double fadeInDuration /* 后一场景淡入动作持续时长 */
); );
protected: protected:
// 更新动 // 更新动画
virtual void _updateCustom() override; virtual void _updateCustom() override;
virtual void _init( virtual void _init(
@ -85,11 +81,6 @@ protected:
) override; ) override;
virtual void _reset() override; virtual void _reset() override;
protected:
double _fadeOutDuration;
double _fadeInDuration;
bool _fadeOutTransioning;
}; };
@ -98,11 +89,11 @@ class TransitionEmerge :
{ {
public: public:
TransitionEmerge( TransitionEmerge(
double duration /* 浮现动持续时长 */ double duration /* 浮现动持续时长 */
); );
protected: protected:
// 更新动 // 更新动
virtual void _updateCustom() override; virtual void _updateCustom() override;
virtual void _init( virtual void _init(
@ -119,12 +110,12 @@ class TransitionMove :
{ {
public: public:
TransitionMove( TransitionMove(
double moveDuration, /* 场景移动动持续时长 */ double moveDuration, /* 场景移动动持续时长 */
Direction direction = Direction::LEFT /* ³¡¾°Òƶ¯·½Ïò */ Direction direction = Direction::LEFT /* ³¡¾°Òƶ¯·½Ïò */
); );
protected: protected:
// 更新动 // 更新动
virtual void _updateCustom() override; virtual void _updateCustom() override;
virtual void _init( virtual void _init(