From 7920099161d8c834f0313e91bef6dbc41d473e92 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Tue, 22 May 2018 12:59:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4TransitionFade=E7=9A=84?= =?UTF-8?q?=E4=B8=A4=E5=8F=82=E6=95=B0=E6=9E=84=E9=80=A0=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/Transition/TransitionFade.cpp | 37 +++++----------------------- core/e2dtransition.h | 39 ++++++++++++------------------ 2 files changed, 21 insertions(+), 55 deletions(-) diff --git a/core/Transition/TransitionFade.cpp b/core/Transition/TransitionFade.cpp index dea004dd..f77437f4 100644 --- a/core/Transition/TransitionFade.cpp +++ b/core/Transition/TransitionFade.cpp @@ -2,53 +2,28 @@ #include "..\e2dnode.h" e2d::TransitionFade::TransitionFade(double duration) - : Transition(0) - , _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) + : Transition(duration) { } void e2d::TransitionFade::_init(Scene * prev, Scene * next) { Transition::_init(prev, next); - if (_outScene) - { - _fadeOutTransioning = true; - _duration = _fadeOutDuration; - } - else - { - _fadeOutTransioning = false; - _duration = _fadeInDuration; - } _outLayerParam.opacity = 1; _inLayerParam.opacity = 0; } void e2d::TransitionFade::_updateCustom() { - if (_fadeOutTransioning) + if (_delta < 0.5) { - _outLayerParam.opacity = float(1 - _delta); - if (_delta >= 1) - { - _fadeOutTransioning = false; - _duration = _fadeInDuration; - _last = Time::getTotalTime(); - } + _outLayerParam.opacity = 1 - float(_delta) * 2; + _inLayerParam.opacity = 0; } else { - _inLayerParam.opacity = float(_delta); + _outLayerParam.opacity = 0; + _inLayerParam.opacity = float(_delta - 0.5) * 2; if (_delta >= 1) { this->_stop(); diff --git a/core/e2dtransition.h b/core/e2dtransition.h index 73eb4209..5cdc70c5 100644 --- a/core/e2dtransition.h +++ b/core/e2dtransition.h @@ -8,7 +8,7 @@ namespace e2d class SceneManager; -// 基础过渡动作 +// 场景过渡 class Transition : public Object { @@ -19,32 +19,32 @@ public: virtual ~Transition(); - // 场景切换动作是否结束 + // 场景过渡动画是否结束 bool isDone(); // 销毁对象 virtual void onDestroy() override; protected: - // 初始化场景动作 + // 初始化场景过渡动画 virtual void _init( Scene * prev, Scene * next ); - // 更新场景动作 + // 更新场景过渡动画 virtual void _update(); - // 更新场景动作 + // 更新场景过渡动画 virtual void _updateCustom() = 0; - // 渲染场景动作 + // 渲染场景过渡动画 virtual void _render(); - // 重置场景动作 + // 重置场景过渡动画 virtual void _reset() = 0; - // 停止场景动作 + // 停止场景过渡动画 virtual void _stop(); protected: @@ -62,21 +62,17 @@ protected: }; +// 渐变过渡 class TransitionFade : public Transition { public: TransitionFade( - double duration /* 动作持续时长 */ - ); - - TransitionFade( - double fadeOutDuration, /* 前一场景淡出动作持续时长 */ - double fadeInDuration /* 后一场景淡入动作持续时长 */ + double duration /* 动画持续时长 */ ); protected: - // 更新动作 + // 更新动画 virtual void _updateCustom() override; virtual void _init( @@ -85,11 +81,6 @@ protected: ) override; virtual void _reset() override; - -protected: - double _fadeOutDuration; - double _fadeInDuration; - bool _fadeOutTransioning; }; @@ -98,11 +89,11 @@ class TransitionEmerge : { public: TransitionEmerge( - double duration /* 浮现动作持续时长 */ + double duration /* 浮现动画持续时长 */ ); protected: - // 更新动作 + // 更新动画 virtual void _updateCustom() override; virtual void _init( @@ -119,12 +110,12 @@ class TransitionMove : { public: TransitionMove( - double moveDuration, /* 场景移动动作持续时长 */ + double moveDuration, /* 场景移动动画持续时长 */ Direction direction = Direction::LEFT /* 场景移动方向 */ ); protected: - // 更新动作 + // 更新动画 virtual void _updateCustom() override; virtual void _init(