perfect the pause function.
This commit is contained in:
parent
f6eecee3aa
commit
6319ed7f2b
|
|
@ -45,13 +45,9 @@ void e2d::EAction::stop()
|
||||||
m_bEnding = true;
|
m_bEnding = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EAction::setTarget(ENode * node)
|
void e2d::EAction::_setTarget(ENode * node)
|
||||||
{
|
{
|
||||||
if (!m_pTarget && node)
|
m_pTarget = node;
|
||||||
{
|
|
||||||
// 动作只能有一个目标
|
|
||||||
m_pTarget = node;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::EAction * e2d::EAction::reverse() const
|
e2d::EAction * e2d::EAction::reverse() const
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ e2d::EActionLoop * e2d::EActionLoop::clone() const
|
||||||
void e2d::EActionLoop::_init()
|
void e2d::EActionLoop::_init()
|
||||||
{
|
{
|
||||||
EAction::_init();
|
EAction::_init();
|
||||||
m_pAction->setTarget(m_pTarget);
|
m_pAction->_setTarget(m_pTarget);
|
||||||
m_pAction->_init();
|
m_pAction->_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ void e2d::EActionSequence::_init()
|
||||||
{
|
{
|
||||||
for (auto action : m_vActions)
|
for (auto action : m_vActions)
|
||||||
{
|
{
|
||||||
action->setTarget(m_pTarget);
|
action->_setTarget(m_pTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 初始化第一个动作
|
// 初始化第一个动作
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ e2d::EActionTwo * e2d::EActionTwo::reverse(bool actionReverse) const
|
||||||
void e2d::EActionTwo::_init()
|
void e2d::EActionTwo::_init()
|
||||||
{
|
{
|
||||||
EAction::_init();
|
EAction::_init();
|
||||||
m_pFirstAction->setTarget(m_pTarget);
|
m_pFirstAction->_setTarget(m_pTarget);
|
||||||
m_pSecondAction->setTarget(m_pTarget);
|
m_pSecondAction->_setTarget(m_pTarget);
|
||||||
|
|
||||||
m_pFirstAction->_init();
|
m_pFirstAction->_init();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ e2d::EActionTwoAtSameTime * e2d::EActionTwoAtSameTime::reverse(bool actionRevers
|
||||||
void e2d::EActionTwoAtSameTime::_init()
|
void e2d::EActionTwoAtSameTime::_init()
|
||||||
{
|
{
|
||||||
EAction::_init();
|
EAction::_init();
|
||||||
m_pFirstAction->setTarget(m_pTarget);
|
m_pFirstAction->_setTarget(m_pTarget);
|
||||||
m_pSecondAction->setTarget(m_pTarget);
|
m_pSecondAction->_setTarget(m_pTarget);
|
||||||
|
|
||||||
m_pFirstAction->_init();
|
m_pFirstAction->_init();
|
||||||
m_pSecondAction->_init();
|
m_pSecondAction->_init();
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,14 @@
|
||||||
|
|
||||||
e2d::EAnimation::EAnimation()
|
e2d::EAnimation::EAnimation()
|
||||||
: m_nFrameIndex(0)
|
: m_nFrameIndex(0)
|
||||||
|
, m_pTarget(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::EAnimation::EAnimation(float invertal)
|
e2d::EAnimation::EAnimation(float invertal)
|
||||||
: m_nFrameIndex(0)
|
: m_nFrameIndex(0)
|
||||||
, m_fInterval(invertal)
|
, m_fInterval(invertal)
|
||||||
|
, m_pTarget(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -45,7 +47,7 @@ void e2d::EAnimation::_update()
|
||||||
// 重新记录时间
|
// 重新记录时间
|
||||||
m_fLast += m_fInterval;
|
m_fLast += m_fInterval;
|
||||||
// 加载关键帧
|
// 加载关键帧
|
||||||
reinterpret_cast<ESprite*>(m_pTarget)->loadFrom(m_vFrames[m_nFrameIndex]);
|
m_pTarget->loadFrom(m_vFrames[m_nFrameIndex]);
|
||||||
m_nFrameIndex++;
|
m_nFrameIndex++;
|
||||||
// 判断动作是否结束
|
// 判断动作是否结束
|
||||||
if (m_nFrameIndex == m_vFrames.size())
|
if (m_nFrameIndex == m_vFrames.size())
|
||||||
|
|
@ -62,6 +64,11 @@ void e2d::EAnimation::_reset()
|
||||||
m_nFrameIndex = 0;
|
m_nFrameIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void e2d::EAnimation::_setTarget(ENode * node)
|
||||||
|
{
|
||||||
|
m_pTarget = static_cast<ESprite*>(node);
|
||||||
|
}
|
||||||
|
|
||||||
void e2d::EAnimation::addKeyframe(EImage * frame)
|
void e2d::EAnimation::addKeyframe(EImage * frame)
|
||||||
{
|
{
|
||||||
if (frame)
|
if (frame)
|
||||||
|
|
|
||||||
|
|
@ -50,13 +50,6 @@ bool e2d::EGame::init(LPCTSTR sTitle, UINT32 nWidth, UINT32 nHeight, LPCTSTR pIc
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化计时
|
|
||||||
if (!ETime::__init())
|
|
||||||
{
|
|
||||||
WARN_IF(true, "ETime::__init Failed!");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 初始化 DirectInput
|
// 初始化 DirectInput
|
||||||
if (!EInput::__init())
|
if (!EInput::__init())
|
||||||
{
|
{
|
||||||
|
|
@ -99,22 +92,32 @@ int e2d::EGame::run()
|
||||||
::UpdateWindow(EWindow::getHWnd());
|
::UpdateWindow(EWindow::getHWnd());
|
||||||
// 处理窗口消息
|
// 处理窗口消息
|
||||||
EWindow::__poll();
|
EWindow::__poll();
|
||||||
// 刷新时间信息
|
// 初始化计时
|
||||||
ETime::__updateNow();
|
ETime::__init();
|
||||||
ETime::__updateLast();
|
|
||||||
|
|
||||||
while (!s_bEndGame)
|
while (!s_bEndGame)
|
||||||
{
|
{
|
||||||
// 处理窗口消息
|
// 处理窗口消息
|
||||||
EWindow::__poll();
|
EWindow::__poll();
|
||||||
// 刷新时间信息
|
// 刷新时间
|
||||||
ETime::__updateNow();
|
ETime::__updateNow();
|
||||||
|
|
||||||
// 判断是否达到了刷新状态
|
// 判断是否达到了刷新状态
|
||||||
if (ETime::getDeltaTime() >= 17)
|
if (ETime::__isReady())
|
||||||
{
|
{
|
||||||
ETime::__updateLast(); // 刷新时间信息
|
while (ETime::__isReady())
|
||||||
EGame::__update(); // 更新游戏内容
|
{
|
||||||
|
EInput::__updateDeviceState(); // 获取用户输入
|
||||||
|
ESceneManager::__update(); // 更新场景内容
|
||||||
|
ETime::__updateLast(); // 刷新时间信息
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s_bPaused)
|
||||||
|
{
|
||||||
|
ETimerManager::__update(); // 定时器管理器执行程序
|
||||||
|
EActionManager::__update(); // 动作管理器执行程序
|
||||||
|
}
|
||||||
|
|
||||||
ERenderer::__render(); // 渲染游戏画面
|
ERenderer::__render(); // 渲染游戏画面
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -159,8 +162,6 @@ void e2d::EGame::uninit()
|
||||||
{
|
{
|
||||||
// 删除所有场景
|
// 删除所有场景
|
||||||
ESceneManager::__uninit();
|
ESceneManager::__uninit();
|
||||||
// 重置窗口属性
|
|
||||||
EWindow::__uninit();
|
|
||||||
// 关闭输入
|
// 关闭输入
|
||||||
EInput::__uninit();
|
EInput::__uninit();
|
||||||
// 关闭播放器
|
// 关闭播放器
|
||||||
|
|
@ -169,27 +170,18 @@ void e2d::EGame::uninit()
|
||||||
ETime::__uninit();
|
ETime::__uninit();
|
||||||
// 清空图片缓存
|
// 清空图片缓存
|
||||||
EImage::clearCache();
|
EImage::clearCache();
|
||||||
// 删除渲染相关资源
|
|
||||||
ERenderer::__discardResources();
|
|
||||||
// 刷新内存池
|
// 刷新内存池
|
||||||
EObjectManager::__flush();
|
EObjectManager::__flush();
|
||||||
|
// 删除渲染相关资源
|
||||||
|
ERenderer::__discardResources();
|
||||||
|
// 销毁窗口
|
||||||
|
EWindow::__uninit();
|
||||||
|
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
|
|
||||||
s_bInitialized = false;
|
s_bInitialized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EGame::__update()
|
|
||||||
{
|
|
||||||
if (s_bPaused)
|
|
||||||
return;
|
|
||||||
|
|
||||||
EInput::__updateDeviceState(); // 获取用户输入
|
|
||||||
ETimerManager::__update(); // 定时器管理器执行程序
|
|
||||||
EActionManager::__update(); // 动作管理器执行程序
|
|
||||||
ESceneManager::__update(); // 更新游戏内容
|
|
||||||
}
|
|
||||||
|
|
||||||
e2d::EString e2d::EGame::getAppName()
|
e2d::EString e2d::EGame::getAppName()
|
||||||
{
|
{
|
||||||
return s_sAppName;
|
return s_sAppName;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,23 @@
|
||||||
#include "..\ebase.h"
|
#include "..\ebase.h"
|
||||||
|
#include <thread>
|
||||||
|
#include <chrono>
|
||||||
|
using namespace std::chrono;
|
||||||
|
|
||||||
|
|
||||||
|
// 游戏开始时间
|
||||||
|
static steady_clock::time_point s_tStart;
|
||||||
|
// 当前时间
|
||||||
|
static steady_clock::time_point s_tNow;
|
||||||
|
// 上一帧刷新时间
|
||||||
|
static steady_clock::time_point s_tFixedUpdate;
|
||||||
|
// 上一次更新时间
|
||||||
|
static steady_clock::time_point s_tLastUpdate;
|
||||||
// 上一帧与当前帧的时间间隔
|
// 上一帧与当前帧的时间间隔
|
||||||
static int s_nInterval = 0;
|
static int s_nInterval = 0;
|
||||||
// 游戏开始时长
|
// 游戏开始时长
|
||||||
static float s_fTotalTime = 0;
|
static float s_fTotalTime = 0;
|
||||||
|
// 每一帧间隔
|
||||||
|
static milliseconds s_tExceptedInvertal;
|
||||||
|
|
||||||
|
|
||||||
float e2d::ETime::getTotalTime()
|
float e2d::ETime::getTotalTime()
|
||||||
|
|
@ -16,26 +30,10 @@ int e2d::ETime::getDeltaTime()
|
||||||
return s_nInterval;
|
return s_nInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if _MSC_VER > 1600
|
|
||||||
|
|
||||||
#include <thread>
|
|
||||||
#include <chrono>
|
|
||||||
using namespace std::chrono;
|
|
||||||
|
|
||||||
|
|
||||||
// 游戏开始时间
|
|
||||||
static steady_clock::time_point s_tStart;
|
|
||||||
// 当前时间
|
|
||||||
static steady_clock::time_point s_tNow;
|
|
||||||
// 上一帧刷新时间
|
|
||||||
static steady_clock::time_point s_tLast;
|
|
||||||
|
|
||||||
|
|
||||||
bool e2d::ETime::__init()
|
bool e2d::ETime::__init()
|
||||||
{
|
{
|
||||||
s_tStart = s_tLast = s_tNow = steady_clock::now();
|
s_tStart = s_tLastUpdate = s_tFixedUpdate = s_tNow = steady_clock::now();
|
||||||
|
s_tExceptedInvertal = milliseconds(17);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,93 +41,35 @@ void e2d::ETime::__uninit()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool e2d::ETime::__isReady()
|
||||||
|
{
|
||||||
|
return s_tExceptedInvertal < duration_cast<milliseconds>(s_tNow - s_tFixedUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
void e2d::ETime::__updateNow()
|
void e2d::ETime::__updateNow()
|
||||||
{
|
{
|
||||||
|
// 刷新时间
|
||||||
s_tNow = steady_clock::now();
|
s_tNow = steady_clock::now();
|
||||||
s_fTotalTime = static_cast<float>(duration_cast<milliseconds>(s_tNow - s_tStart).count()) / 1000.0f;
|
|
||||||
s_nInterval = static_cast<int>(duration_cast<milliseconds>(s_tNow - s_tLast).count());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ETime::__updateLast()
|
void e2d::ETime::__updateLast()
|
||||||
{
|
{
|
||||||
s_tLast = s_tNow;
|
s_tFixedUpdate += s_tExceptedInvertal;
|
||||||
|
s_tLastUpdate = s_tNow;
|
||||||
|
|
||||||
|
s_tNow = steady_clock::now();
|
||||||
|
s_nInterval = static_cast<int>(duration_cast<milliseconds>(s_tNow - s_tLastUpdate).count());
|
||||||
|
s_fTotalTime = static_cast<float>(duration_cast<milliseconds>(s_tNow - s_tStart).count()) / 1000.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ETime::__sleep()
|
void e2d::ETime::__sleep()
|
||||||
{
|
{
|
||||||
// 计算挂起时长
|
// 计算挂起时长
|
||||||
int nWaitMS = 16 - s_nInterval;
|
int nWaitMS = 16 - static_cast<int>(duration_cast<milliseconds>(s_tNow - s_tFixedUpdate).count());
|
||||||
// 挂起线程,释放 CPU 占用
|
|
||||||
if (nWaitMS > 1)
|
if (nWaitMS > 1)
|
||||||
{
|
{
|
||||||
|
// 挂起线程,释放 CPU 占用
|
||||||
std::this_thread::sleep_for(milliseconds(nWaitMS));
|
std::this_thread::sleep_for(milliseconds(nWaitMS));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
|
|
||||||
#include <mmsystem.h>
|
|
||||||
#pragma comment(lib, "winmm.lib")
|
|
||||||
|
|
||||||
// 时钟频率
|
|
||||||
static LARGE_INTEGER s_tFreq;
|
|
||||||
// 当前时间
|
|
||||||
static LARGE_INTEGER s_tNow;
|
|
||||||
// 游戏开始时间
|
|
||||||
static LARGE_INTEGER s_tStart;
|
|
||||||
// 上一帧画面绘制时间
|
|
||||||
static LARGE_INTEGER s_tLast;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool e2d::ETime::__init()
|
|
||||||
{
|
|
||||||
bool bRet = false;
|
|
||||||
if (::timeBeginPeriod(1))
|
|
||||||
{
|
|
||||||
// 修改时间精度
|
|
||||||
if (::QueryPerformanceFrequency(&s_tFreq)) // 获取时钟频率
|
|
||||||
{
|
|
||||||
|
|
||||||
if (::QueryPerformanceCounter(&s_tNow)) // 刷新当前时间
|
|
||||||
{
|
|
||||||
s_tStart = s_tLast = s_tNow;
|
|
||||||
bRet = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bRet;
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ETime::__uninit()
|
|
||||||
{
|
|
||||||
::timeEndPeriod(1); // 重置时间精度
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ETime::__updateNow()
|
|
||||||
{
|
|
||||||
::QueryPerformanceCounter(&s_tNow);
|
|
||||||
s_fTotalTime = static_cast<float>(s_tNow.QuadPart - s_tStart.QuadPart) / s_tFreq.QuadPart;
|
|
||||||
s_nInterval = static_cast<int>((s_tNow.QuadPart - s_tLast.QuadPart) * 1000LL / s_tFreq.QuadPart);
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ETime::__updateLast()
|
|
||||||
{
|
|
||||||
s_tLast = s_tNow;
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ETime::__sleep()
|
|
||||||
{
|
|
||||||
// 计算挂起时长
|
|
||||||
int nWaitMS = 16 - s_nInterval;
|
|
||||||
// 挂起线程,释放 CPU 占用
|
|
||||||
if (nWaitMS > 1)
|
|
||||||
{
|
|
||||||
::Sleep(nWaitMS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _MSC_VER > 1600
|
|
||||||
|
|
|
||||||
|
|
@ -102,10 +102,14 @@ bool e2d::EWindow::__init(LPCTSTR sTitle, UINT32 nWidth, UINT32 nHeight, LPCTSTR
|
||||||
|
|
||||||
void e2d::EWindow::__uninit()
|
void e2d::EWindow::__uninit()
|
||||||
{
|
{
|
||||||
|
// 关闭控制台
|
||||||
if (::GetConsoleWindow())
|
if (::GetConsoleWindow())
|
||||||
{
|
{
|
||||||
::FreeConsole();
|
::FreeConsole();
|
||||||
}
|
}
|
||||||
|
// 关闭窗口
|
||||||
|
DestroyWindow(s_HWnd);
|
||||||
|
s_HWnd = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EWindow::__poll()
|
void e2d::EWindow::__poll()
|
||||||
|
|
|
||||||
|
|
@ -39,13 +39,21 @@ void e2d::EScene::_render()
|
||||||
|
|
||||||
void e2d::EScene::_update()
|
void e2d::EScene::_update()
|
||||||
{
|
{
|
||||||
// 执行 onUpdate 函数
|
if (!EGame::isPaused())
|
||||||
if (m_bAutoUpdate)
|
|
||||||
{
|
{
|
||||||
this->onUpdate();
|
// 执行 onUpdate 函数
|
||||||
|
if (m_bAutoUpdate)
|
||||||
|
{
|
||||||
|
this->onUpdate();
|
||||||
|
}
|
||||||
|
// 更新根节点
|
||||||
|
m_pRoot->_update(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 更新根节点
|
||||||
|
m_pRoot->_update(true);
|
||||||
}
|
}
|
||||||
// 更新根节点
|
|
||||||
m_pRoot->_update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EScene::setAutoUpdate(bool bAutoUpdate)
|
void e2d::EScene::setAutoUpdate(bool bAutoUpdate)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
e2d::EButton::EButton()
|
e2d::EButton::EButton()
|
||||||
: m_Callback((const BtnClkCallback &)nullptr)
|
: m_Callback((const BtnClkCallback &)nullptr)
|
||||||
, m_eStatus(EButton::NORMAL)
|
, m_eBtnState(EButton::NORMAL)
|
||||||
, m_bEnable(true)
|
, m_bEnable(true)
|
||||||
, m_bIsSelected(false)
|
, m_bIsSelected(false)
|
||||||
, m_pNormal(nullptr)
|
, m_pNormal(nullptr)
|
||||||
|
|
@ -14,7 +14,7 @@ e2d::EButton::EButton()
|
||||||
|
|
||||||
e2d::EButton::EButton(ENode * normal, const BtnClkCallback & callback)
|
e2d::EButton::EButton(ENode * normal, const BtnClkCallback & callback)
|
||||||
: m_Callback((const BtnClkCallback &)nullptr)
|
: m_Callback((const BtnClkCallback &)nullptr)
|
||||||
, m_eStatus(EButton::NORMAL)
|
, m_eBtnState(EButton::NORMAL)
|
||||||
, m_bEnable(true)
|
, m_bEnable(true)
|
||||||
, m_bIsSelected(false)
|
, m_bIsSelected(false)
|
||||||
, m_pNormal(nullptr)
|
, m_pNormal(nullptr)
|
||||||
|
|
@ -28,7 +28,7 @@ e2d::EButton::EButton(ENode * normal, const BtnClkCallback & callback)
|
||||||
|
|
||||||
e2d::EButton::EButton(ENode * normal, ENode * selected, const BtnClkCallback & callback)
|
e2d::EButton::EButton(ENode * normal, ENode * selected, const BtnClkCallback & callback)
|
||||||
: m_Callback((const BtnClkCallback &)nullptr)
|
: m_Callback((const BtnClkCallback &)nullptr)
|
||||||
, m_eStatus(EButton::NORMAL)
|
, m_eBtnState(EButton::NORMAL)
|
||||||
, m_bEnable(true)
|
, m_bEnable(true)
|
||||||
, m_bIsSelected(false)
|
, m_bIsSelected(false)
|
||||||
, m_pNormal(nullptr)
|
, m_pNormal(nullptr)
|
||||||
|
|
@ -43,7 +43,7 @@ e2d::EButton::EButton(ENode * normal, ENode * selected, const BtnClkCallback & c
|
||||||
|
|
||||||
e2d::EButton::EButton(ENode * normal, ENode * mouseover, ENode * selected, const BtnClkCallback & callback)
|
e2d::EButton::EButton(ENode * normal, ENode * mouseover, ENode * selected, const BtnClkCallback & callback)
|
||||||
: m_Callback((const BtnClkCallback &)nullptr)
|
: m_Callback((const BtnClkCallback &)nullptr)
|
||||||
, m_eStatus(EButton::NORMAL)
|
, m_eBtnState(EButton::NORMAL)
|
||||||
, m_bEnable(true)
|
, m_bEnable(true)
|
||||||
, m_bIsSelected(false)
|
, m_bIsSelected(false)
|
||||||
, m_pNormal(nullptr)
|
, m_pNormal(nullptr)
|
||||||
|
|
@ -59,7 +59,7 @@ e2d::EButton::EButton(ENode * normal, ENode * mouseover, ENode * selected, const
|
||||||
|
|
||||||
e2d::EButton::EButton(ENode * normal, ENode * mouseover, ENode * selected, ENode * disabled, const BtnClkCallback & callback)
|
e2d::EButton::EButton(ENode * normal, ENode * mouseover, ENode * selected, ENode * disabled, const BtnClkCallback & callback)
|
||||||
: m_Callback((const BtnClkCallback &)nullptr)
|
: m_Callback((const BtnClkCallback &)nullptr)
|
||||||
, m_eStatus(EButton::NORMAL)
|
, m_eBtnState(EButton::NORMAL)
|
||||||
, m_bEnable(true)
|
, m_bEnable(true)
|
||||||
, m_bIsSelected(false)
|
, m_bIsSelected(false)
|
||||||
, m_pNormal(nullptr)
|
, m_pNormal(nullptr)
|
||||||
|
|
@ -228,7 +228,7 @@ void e2d::EButton::onUpdate()
|
||||||
{
|
{
|
||||||
// 鼠标左键按下,且位于按钮内时,标记 m_bIsSelected 为 true
|
// 鼠标左键按下,且位于按钮内时,标记 m_bIsSelected 为 true
|
||||||
m_bIsSelected = true;
|
m_bIsSelected = true;
|
||||||
_setStatus(EButton::SELECTED);
|
_setState(EButton::SELECTED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -237,25 +237,30 @@ void e2d::EButton::onUpdate()
|
||||||
{
|
{
|
||||||
if (pSelected->isPointIn(EInput::getMousePos()))
|
if (pSelected->isPointIn(EInput::getMousePos()))
|
||||||
{
|
{
|
||||||
_setStatus(EButton::SELECTED);
|
_setState(EButton::SELECTED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (m_pNormal->isPointIn(EInput::getMousePos()))
|
else if (m_pNormal->isPointIn(EInput::getMousePos()))
|
||||||
{
|
{
|
||||||
_setStatus(EButton::MOUSEOVER);
|
_setState(EButton::MOUSEOVER);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_setStatus(EButton::NORMAL);
|
_setState(EButton::NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EButton::_setStatus(STATUS status)
|
void e2d::EButton::onPause()
|
||||||
{
|
{
|
||||||
if (m_eStatus != status)
|
this->onUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::EButton::_setState(BTN_STATE state)
|
||||||
|
{
|
||||||
|
if (m_eBtnState != state)
|
||||||
{
|
{
|
||||||
m_eStatus = status;
|
m_eBtnState = state;
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -269,11 +274,11 @@ void e2d::EButton::_updateVisiable()
|
||||||
|
|
||||||
if (m_bEnable)
|
if (m_bEnable)
|
||||||
{
|
{
|
||||||
if (m_eStatus == EButton::SELECTED && m_pSelected)
|
if (m_eBtnState == EButton::SELECTED && m_pSelected)
|
||||||
{
|
{
|
||||||
m_pSelected->setVisiable(true);
|
m_pSelected->setVisiable(true);
|
||||||
}
|
}
|
||||||
else if (m_eStatus == EButton::MOUSEOVER && m_pMouseover)
|
else if (m_eBtnState == EButton::MOUSEOVER && m_pMouseover)
|
||||||
{
|
{
|
||||||
m_pMouseover->setVisiable(true);
|
m_pMouseover->setVisiable(true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
e2d::EButtonToggle::EButtonToggle()
|
e2d::EButtonToggle::EButtonToggle()
|
||||||
: EButton()
|
: EButton()
|
||||||
, m_bToggle(true)
|
, m_bState(true)
|
||||||
, m_pNormalOn(nullptr)
|
, m_pNormalOn(nullptr)
|
||||||
, m_pMouseoverOn(nullptr)
|
, m_pMouseoverOn(nullptr)
|
||||||
, m_pSelectedOn(nullptr)
|
, m_pSelectedOn(nullptr)
|
||||||
|
|
@ -16,7 +16,7 @@ e2d::EButtonToggle::EButtonToggle()
|
||||||
|
|
||||||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, const BtnClkCallback & callback)
|
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, const BtnClkCallback & callback)
|
||||||
: EButton()
|
: EButton()
|
||||||
, m_bToggle(true)
|
, m_bState(true)
|
||||||
, m_pNormalOn(nullptr)
|
, m_pNormalOn(nullptr)
|
||||||
, m_pMouseoverOn(nullptr)
|
, m_pMouseoverOn(nullptr)
|
||||||
, m_pSelectedOn(nullptr)
|
, m_pSelectedOn(nullptr)
|
||||||
|
|
@ -33,7 +33,7 @@ e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNorma
|
||||||
|
|
||||||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnSelected, ENode * toggleOffSelected, const BtnClkCallback & callback)
|
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnSelected, ENode * toggleOffSelected, const BtnClkCallback & callback)
|
||||||
: EButton()
|
: EButton()
|
||||||
, m_bToggle(true)
|
, m_bState(true)
|
||||||
, m_pNormalOn(nullptr)
|
, m_pNormalOn(nullptr)
|
||||||
, m_pMouseoverOn(nullptr)
|
, m_pMouseoverOn(nullptr)
|
||||||
, m_pSelectedOn(nullptr)
|
, m_pSelectedOn(nullptr)
|
||||||
|
|
@ -52,7 +52,7 @@ e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNorma
|
||||||
|
|
||||||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnMouseOver, ENode * toggleOffMouseOver, ENode * toggleOnSelected, ENode * toggleOffSelected, const BtnClkCallback & callback)
|
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnMouseOver, ENode * toggleOffMouseOver, ENode * toggleOnSelected, ENode * toggleOffSelected, const BtnClkCallback & callback)
|
||||||
: EButton()
|
: EButton()
|
||||||
, m_bToggle(true)
|
, m_bState(true)
|
||||||
, m_pNormalOn(nullptr)
|
, m_pNormalOn(nullptr)
|
||||||
, m_pMouseoverOn(nullptr)
|
, m_pMouseoverOn(nullptr)
|
||||||
, m_pSelectedOn(nullptr)
|
, m_pSelectedOn(nullptr)
|
||||||
|
|
@ -73,7 +73,7 @@ e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNorma
|
||||||
|
|
||||||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnMouseOver, ENode * toggleOffMouseOver, ENode * toggleOnSelected, ENode * toggleOffSelected, ENode * toggleOnDisabled, ENode * toggleOffDisabled, const BtnClkCallback & callback)
|
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnMouseOver, ENode * toggleOffMouseOver, ENode * toggleOnSelected, ENode * toggleOffSelected, ENode * toggleOnDisabled, ENode * toggleOffDisabled, const BtnClkCallback & callback)
|
||||||
: EButton()
|
: EButton()
|
||||||
, m_bToggle(true)
|
, m_bState(true)
|
||||||
, m_pNormalOn(nullptr)
|
, m_pNormalOn(nullptr)
|
||||||
, m_pMouseoverOn(nullptr)
|
, m_pMouseoverOn(nullptr)
|
||||||
, m_pSelectedOn(nullptr)
|
, m_pSelectedOn(nullptr)
|
||||||
|
|
@ -97,7 +97,7 @@ e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNorma
|
||||||
void e2d::EButtonToggle::toggle()
|
void e2d::EButtonToggle::toggle()
|
||||||
{
|
{
|
||||||
// 设置按钮状态
|
// 设置按钮状态
|
||||||
setToggle(!m_bToggle);
|
setState(!m_bState);
|
||||||
// 执行回调函数
|
// 执行回调函数
|
||||||
if (m_Callback)
|
if (m_Callback)
|
||||||
{
|
{
|
||||||
|
|
@ -105,17 +105,17 @@ void e2d::EButtonToggle::toggle()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool e2d::EButtonToggle::isToggleOn() const
|
bool e2d::EButtonToggle::getState() const
|
||||||
{
|
{
|
||||||
return m_bToggle;
|
return m_bState;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EButtonToggle::setToggle(bool toggle)
|
void e2d::EButtonToggle::setState(bool bState)
|
||||||
{
|
{
|
||||||
if (m_bToggle != toggle)
|
if (m_bState != bState)
|
||||||
{
|
{
|
||||||
m_bToggle = toggle;
|
m_bState = bState;
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -133,10 +133,11 @@ void e2d::EButtonToggle::setNormal(ENode * normal)
|
||||||
if (normal)
|
if (normal)
|
||||||
{
|
{
|
||||||
this->addChild(normal);
|
this->addChild(normal);
|
||||||
|
normal->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pNormalOn = normal;
|
m_pNormalOn = normal;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -154,10 +155,11 @@ void e2d::EButtonToggle::setMouseOver(ENode * mouseover)
|
||||||
if (mouseover)
|
if (mouseover)
|
||||||
{
|
{
|
||||||
this->addChild(mouseover);
|
this->addChild(mouseover);
|
||||||
|
mouseover->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pMouseoverOn = mouseover;
|
m_pMouseoverOn = mouseover;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -175,10 +177,11 @@ void e2d::EButtonToggle::setSelected(ENode * selected)
|
||||||
if (selected)
|
if (selected)
|
||||||
{
|
{
|
||||||
this->addChild(selected);
|
this->addChild(selected);
|
||||||
|
selected->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pSelectedOn = selected;
|
m_pSelectedOn = selected;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -196,10 +199,11 @@ void e2d::EButtonToggle::setDisabled(ENode * disabled)
|
||||||
if (disabled)
|
if (disabled)
|
||||||
{
|
{
|
||||||
this->addChild(disabled);
|
this->addChild(disabled);
|
||||||
|
disabled->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pDisabledOn = disabled;
|
m_pDisabledOn = disabled;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -217,10 +221,11 @@ void e2d::EButtonToggle::setNormalOff(ENode * normal)
|
||||||
if (normal)
|
if (normal)
|
||||||
{
|
{
|
||||||
this->addChild(normal);
|
this->addChild(normal);
|
||||||
|
normal->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pNormalOff = normal;
|
m_pNormalOff = normal;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -238,10 +243,11 @@ void e2d::EButtonToggle::setMouseOverOff(ENode * mouseover)
|
||||||
if (mouseover)
|
if (mouseover)
|
||||||
{
|
{
|
||||||
this->addChild(mouseover);
|
this->addChild(mouseover);
|
||||||
|
mouseover->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pMouseoverOff = mouseover;
|
m_pMouseoverOff = mouseover;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -259,10 +265,11 @@ void e2d::EButtonToggle::setSelectedOff(ENode * selected)
|
||||||
if (selected)
|
if (selected)
|
||||||
{
|
{
|
||||||
this->addChild(selected);
|
this->addChild(selected);
|
||||||
|
selected->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pSelectedOff = selected;
|
m_pSelectedOff = selected;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -280,17 +287,57 @@ void e2d::EButtonToggle::setDisabledOff(ENode * disabled)
|
||||||
if (disabled)
|
if (disabled)
|
||||||
{
|
{
|
||||||
this->addChild(disabled);
|
this->addChild(disabled);
|
||||||
|
disabled->setPivot(m_fPivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
m_pDisabledOff = disabled;
|
m_pDisabledOff = disabled;
|
||||||
|
|
||||||
_updateToggle();
|
_updateState();
|
||||||
_updateVisiable();
|
_updateVisiable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EButtonToggle::_updateToggle()
|
void e2d::EButtonToggle::setPivotX(float pivotX)
|
||||||
{
|
{
|
||||||
if (m_bToggle)
|
ENode::setPivotX(pivotX);
|
||||||
|
if (m_pNormalOn) m_pNormalOn->setPivotX(pivotX);
|
||||||
|
if (m_pMouseoverOn) m_pMouseoverOn->setPivotX(pivotX);
|
||||||
|
if (m_pSelectedOn) m_pSelectedOn->setPivotX(pivotX);
|
||||||
|
if (m_pDisabledOn) m_pDisabledOn->setPivotX(pivotX);
|
||||||
|
if (m_pNormalOff) m_pNormalOff->setPivotX(pivotX);
|
||||||
|
if (m_pMouseoverOff) m_pMouseoverOff->setPivotX(pivotX);
|
||||||
|
if (m_pSelectedOff) m_pSelectedOff->setPivotX(pivotX);
|
||||||
|
if (m_pDisabledOff) m_pDisabledOff->setPivotX(pivotX);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::EButtonToggle::setPivotY(float pivotY)
|
||||||
|
{
|
||||||
|
ENode::setPivotY(pivotY);
|
||||||
|
if (m_pNormalOn) m_pNormalOn->setPivotY(pivotY);
|
||||||
|
if (m_pMouseoverOn) m_pMouseoverOn->setPivotY(pivotY);
|
||||||
|
if (m_pSelectedOn) m_pSelectedOn->setPivotY(pivotY);
|
||||||
|
if (m_pDisabledOn) m_pDisabledOn->setPivotY(pivotY);
|
||||||
|
if (m_pNormalOff) m_pNormalOff->setPivotY(pivotY);
|
||||||
|
if (m_pMouseoverOff) m_pMouseoverOff->setPivotY(pivotY);
|
||||||
|
if (m_pSelectedOff) m_pSelectedOff->setPivotY(pivotY);
|
||||||
|
if (m_pDisabledOff) m_pDisabledOff->setPivotY(pivotY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::EButtonToggle::setPivot(float pivotX, float pivotY)
|
||||||
|
{
|
||||||
|
ENode::setPivot(pivotX, pivotY);
|
||||||
|
if (m_pNormalOn) m_pNormalOn->setPivot(pivotX, pivotY);
|
||||||
|
if (m_pMouseoverOn) m_pMouseoverOn->setPivot(pivotX, pivotY);
|
||||||
|
if (m_pSelectedOn) m_pSelectedOn->setPivot(pivotX, pivotY);
|
||||||
|
if (m_pDisabledOn) m_pDisabledOn->setPivot(pivotX, pivotY);
|
||||||
|
if (m_pNormalOff) m_pNormalOff->setPivot(pivotX, pivotY);
|
||||||
|
if (m_pMouseoverOff) m_pMouseoverOff->setPivot(pivotX, pivotY);
|
||||||
|
if (m_pSelectedOff) m_pSelectedOff->setPivot(pivotX, pivotY);
|
||||||
|
if (m_pDisabledOff) m_pDisabledOff->setPivot(pivotX, pivotY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::EButtonToggle::_updateState()
|
||||||
|
{
|
||||||
|
if (m_bState)
|
||||||
{
|
{
|
||||||
m_pNormal = m_pNormalOn;
|
m_pNormal = m_pNormalOn;
|
||||||
m_pMouseover = m_pMouseoverOn;
|
m_pMouseover = m_pMouseoverOn;
|
||||||
|
|
@ -318,8 +365,8 @@ void e2d::EButtonToggle::_updateToggle()
|
||||||
|
|
||||||
void e2d::EButtonToggle::_runCallback()
|
void e2d::EButtonToggle::_runCallback()
|
||||||
{
|
{
|
||||||
m_bToggle = !m_bToggle;
|
m_bState = !m_bState;
|
||||||
_updateToggle();
|
_updateState();
|
||||||
|
|
||||||
if (m_Callback)
|
if (m_Callback)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ e2d::ENode::~ENode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::_update()
|
void e2d::ENode::_update(bool bPaused)
|
||||||
{
|
{
|
||||||
if (m_bTransformNeeded)
|
if (m_bTransformNeeded)
|
||||||
{
|
{
|
||||||
|
|
@ -77,7 +77,7 @@ void e2d::ENode::_update()
|
||||||
// 访问 Order 小于零的节点
|
// 访问 Order 小于零的节点
|
||||||
if (child->getOrder() < 0)
|
if (child->getOrder() < 0)
|
||||||
{
|
{
|
||||||
child->_update();
|
child->_update(bPaused);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -85,20 +85,29 @@ void e2d::ENode::_update()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 执行 onUpdate 函数
|
if (bPaused)
|
||||||
if (m_bAutoUpdate)
|
{
|
||||||
|
this->onPause();
|
||||||
|
}
|
||||||
|
else if (m_bAutoUpdate)
|
||||||
{
|
{
|
||||||
this->onUpdate();
|
this->onUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 访问剩余节点
|
// 访问剩余节点
|
||||||
for (; i < size; i++)
|
for (; i < size; i++)
|
||||||
m_vChildren[i]->_update();
|
m_vChildren[i]->_update(bPaused);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 执行 onUpdate 函数
|
if (bPaused)
|
||||||
this->onUpdate();
|
{
|
||||||
|
this->onPause();
|
||||||
|
}
|
||||||
|
else if (m_bAutoUpdate)
|
||||||
|
{
|
||||||
|
this->onUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -720,7 +729,7 @@ void e2d::ENode::runAction(EAction * action)
|
||||||
{
|
{
|
||||||
action = action->clone();
|
action = action->clone();
|
||||||
}
|
}
|
||||||
action->setTarget(this);
|
action->_setTarget(this);
|
||||||
EActionManager::addAction(action);
|
EActionManager::addAction(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -253,6 +253,8 @@ void EMusic::_close()
|
||||||
{
|
{
|
||||||
if (m_pSourceVoice)
|
if (m_pSourceVoice)
|
||||||
{
|
{
|
||||||
|
m_pSourceVoice->Stop();
|
||||||
|
m_pSourceVoice->FlushSourceBuffers();
|
||||||
m_pSourceVoice->DestroyVoice();
|
m_pSourceVoice->DestroyVoice();
|
||||||
m_pSourceVoice = nullptr;
|
m_pSourceVoice = nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class ENode;
|
||||||
class EActionManager;
|
class EActionManager;
|
||||||
class EActionTwo;
|
class EActionTwo;
|
||||||
class EActionLoop;
|
class EActionLoop;
|
||||||
|
|
@ -14,6 +15,7 @@ class ETransitionFade;
|
||||||
class EAction :
|
class EAction :
|
||||||
public EObject
|
public EObject
|
||||||
{
|
{
|
||||||
|
friend ENode;
|
||||||
friend EActionManager;
|
friend EActionManager;
|
||||||
friend EActionTwo;
|
friend EActionTwo;
|
||||||
friend EActionLoop;
|
friend EActionLoop;
|
||||||
|
|
@ -49,11 +51,6 @@ public:
|
||||||
// 获取执行该动作的目标
|
// 获取执行该动作的目标
|
||||||
virtual ENode * getTarget();
|
virtual ENode * getTarget();
|
||||||
|
|
||||||
// 设置动作执行目标
|
|
||||||
virtual void setTarget(
|
|
||||||
ENode * node
|
|
||||||
);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// 初始化动作
|
// 初始化动作
|
||||||
virtual void _init();
|
virtual void _init();
|
||||||
|
|
@ -70,6 +67,11 @@ protected:
|
||||||
// 重置动画时间
|
// 重置动画时间
|
||||||
virtual void _resetTime();
|
virtual void _resetTime();
|
||||||
|
|
||||||
|
// 设置动作执行目标
|
||||||
|
virtual void _setTarget(
|
||||||
|
ENode * node
|
||||||
|
);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_bRunning;
|
bool m_bRunning;
|
||||||
bool m_bEnding;
|
bool m_bEnding;
|
||||||
|
|
@ -579,9 +581,9 @@ public:
|
||||||
EImage * frame /* 添加关键帧 */
|
EImage * frame /* 添加关键帧 */
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置每一帧的时间间隔(秒)
|
// 设置每一帧的时间间隔
|
||||||
void setInterval(
|
void setInterval(
|
||||||
float interval
|
float interval /* 帧间隔(秒) */
|
||||||
);
|
);
|
||||||
|
|
||||||
// 获取该动画的拷贝对象
|
// 获取该动画的拷贝对象
|
||||||
|
|
@ -600,9 +602,15 @@ protected:
|
||||||
// 重置动作
|
// 重置动作
|
||||||
virtual void _reset() override;
|
virtual void _reset() override;
|
||||||
|
|
||||||
|
// 设置动作执行目标
|
||||||
|
virtual void _setTarget(
|
||||||
|
ENode * node
|
||||||
|
) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
float m_fInterval;
|
float m_fInterval;
|
||||||
UINT m_nFrameIndex;
|
UINT m_nFrameIndex;
|
||||||
|
ESprite* m_pTarget;
|
||||||
std::vector<EImage*> m_vFrames;
|
std::vector<EImage*> m_vFrames;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,10 +41,6 @@ public:
|
||||||
|
|
||||||
// 获取 AppName
|
// 获取 AppName
|
||||||
static EString getAppName();
|
static EString getAppName();
|
||||||
|
|
||||||
private:
|
|
||||||
// 更新游戏内容
|
|
||||||
static void __update();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -129,6 +125,9 @@ private:
|
||||||
// 重置计时操作
|
// 重置计时操作
|
||||||
static void __uninit();
|
static void __uninit();
|
||||||
|
|
||||||
|
// 是否达到更新时间
|
||||||
|
static bool __isReady();
|
||||||
|
|
||||||
// 更新当前时间
|
// 更新当前时间
|
||||||
static void __updateNow();
|
static void __updateNow();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -634,8 +634,11 @@ public:
|
||||||
// 重写这个函数,它将在每一帧画面刷新时执行
|
// 重写这个函数,它将在每一帧画面刷新时执行
|
||||||
virtual void onUpdate() {}
|
virtual void onUpdate() {}
|
||||||
|
|
||||||
|
// 重写这个函数,它将在游戏暂停时执行
|
||||||
|
virtual void onPause() {}
|
||||||
|
|
||||||
// 开启或禁用 onUpdate 函数
|
// 开启或禁用 onUpdate 函数
|
||||||
virtual void setAutoUpdate(
|
void setAutoUpdate(
|
||||||
bool bAutoUpdate
|
bool bAutoUpdate
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
149
core/enodes.h
149
core/enodes.h
|
|
@ -21,6 +21,12 @@ public:
|
||||||
|
|
||||||
virtual ~ENode();
|
virtual ~ENode();
|
||||||
|
|
||||||
|
// 进入场景时执行
|
||||||
|
virtual void onEnter() {}
|
||||||
|
|
||||||
|
// 离开场景时执行
|
||||||
|
virtual void onExit() {}
|
||||||
|
|
||||||
// 更新节点
|
// 更新节点
|
||||||
virtual void onUpdate() {}
|
virtual void onUpdate() {}
|
||||||
|
|
||||||
|
|
@ -33,11 +39,11 @@ public:
|
||||||
int nRelation /* 碰撞关系,取值为 ERelation::VALUE 中的一种 */
|
int nRelation /* 碰撞关系,取值为 ERelation::VALUE 中的一种 */
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
// 进入场景时执行
|
// 游戏暂停时的处理
|
||||||
virtual void onEnter() {}
|
virtual void onPause() {}
|
||||||
|
|
||||||
// 离开场景时执行
|
// 节点被销毁时的处理
|
||||||
virtual void onExit() {}
|
virtual void onDestroy() {}
|
||||||
|
|
||||||
// 获取节点显示状态
|
// 获取节点显示状态
|
||||||
virtual bool isVisiable() const;
|
virtual bool isVisiable() const;
|
||||||
|
|
@ -331,46 +337,48 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// 更新节点
|
// 更新节点
|
||||||
virtual void _update();
|
void _update(
|
||||||
|
bool bPaused
|
||||||
|
);
|
||||||
|
|
||||||
// 渲染节点
|
// 渲染节点
|
||||||
virtual void _render();
|
void _render();
|
||||||
|
|
||||||
// 渲染几何图形
|
// 渲染图形
|
||||||
virtual void _drawShape();
|
void _drawShape();
|
||||||
|
|
||||||
// 节点被添加到场景时的执行程序
|
// 节点被添加到场景时的执行程序
|
||||||
virtual void _onEnter();
|
void _onEnter();
|
||||||
|
|
||||||
// 节点从场景中消失时的执行程序
|
// 节点从场景中消失时的执行程序
|
||||||
virtual void _onExit();
|
void _onExit();
|
||||||
|
|
||||||
// 设置节点所在场景
|
// 设置节点所在场景
|
||||||
virtual void _setParentScene(
|
void _setParentScene(
|
||||||
EScene * scene
|
EScene * scene
|
||||||
);
|
);
|
||||||
|
|
||||||
// 对自身进行二维矩阵变换
|
// 对自身进行二维矩阵变换
|
||||||
virtual void _updateTransform();
|
void _updateTransform();
|
||||||
|
|
||||||
// 更新所有子节点矩阵
|
// 更新所有子节点矩阵
|
||||||
virtual void _updateChildrenTransform();
|
void _updateChildrenTransform();
|
||||||
|
|
||||||
// 更新所有子节点透明度
|
// 更新所有子节点透明度
|
||||||
virtual void _updateChildrenOpacity();
|
void _updateChildrenOpacity();
|
||||||
|
|
||||||
// 更新节点矩阵
|
// 修改节点大小
|
||||||
|
void _setSize(
|
||||||
|
float width,
|
||||||
|
float height
|
||||||
|
);
|
||||||
|
|
||||||
|
// 更新节点二维矩阵
|
||||||
static void _updateTransform(ENode * node);
|
static void _updateTransform(ENode * node);
|
||||||
|
|
||||||
// 更新节点透明度
|
// 更新节点透明度
|
||||||
static void _updateOpacity(ENode * node);
|
static void _updateOpacity(ENode * node);
|
||||||
|
|
||||||
// 修改节点大小
|
|
||||||
virtual void _setSize(
|
|
||||||
float width,
|
|
||||||
float height
|
|
||||||
);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
EString m_sName;
|
EString m_sName;
|
||||||
size_t m_nHashName;
|
size_t m_nHashName;
|
||||||
|
|
@ -624,13 +632,16 @@ public:
|
||||||
) override;
|
) override;
|
||||||
|
|
||||||
// 更新按钮状态
|
// 更新按钮状态
|
||||||
virtual void onUpdate();
|
virtual void onUpdate() override;
|
||||||
|
|
||||||
|
// 更新游戏暂停时的按钮状态
|
||||||
|
virtual void onPause() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum STATUS { NORMAL, MOUSEOVER, SELECTED };
|
enum BTN_STATE { NORMAL, MOUSEOVER, SELECTED };
|
||||||
|
|
||||||
// 设置按钮状态
|
// 设置按钮状态
|
||||||
virtual void _setStatus(STATUS status);
|
virtual void _setState(BTN_STATE state);
|
||||||
|
|
||||||
// 刷新按钮显示
|
// 刷新按钮显示
|
||||||
virtual void _updateVisiable();
|
virtual void _updateVisiable();
|
||||||
|
|
@ -639,14 +650,14 @@ protected:
|
||||||
virtual void _runCallback();
|
virtual void _runCallback();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
STATUS m_eStatus;
|
ENode * m_pNormal;
|
||||||
ENode * m_pNormal;
|
ENode * m_pMouseover;
|
||||||
ENode * m_pMouseover;
|
ENode * m_pSelected;
|
||||||
ENode * m_pSelected;
|
ENode * m_pDisabled;
|
||||||
ENode * m_pDisabled;
|
bool m_bEnable;
|
||||||
bool m_bEnable;
|
bool m_bIsSelected;
|
||||||
bool m_bIsSelected;
|
BTN_STATE m_eBtnState;
|
||||||
BtnClkCallback m_Callback;
|
BtnClkCallback m_Callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -659,54 +670,53 @@ public:
|
||||||
|
|
||||||
// 创建开关按钮
|
// 创建开关按钮
|
||||||
EButtonToggle(
|
EButtonToggle(
|
||||||
ENode * toggleOnNormal,
|
ENode * onNormal,
|
||||||
ENode * toggleOffNormal,
|
ENode * offNormal,
|
||||||
const BtnClkCallback & callback = nullptr
|
const BtnClkCallback & callback = nullptr
|
||||||
);
|
);
|
||||||
|
|
||||||
// 创建开关按钮
|
// 创建开关按钮
|
||||||
EButtonToggle(
|
EButtonToggle(
|
||||||
ENode * toggleOnNormal,
|
ENode * onNormal,
|
||||||
ENode * toggleOffNormal,
|
ENode * offNormal,
|
||||||
ENode * toggleOnSelected,
|
ENode * onSelected,
|
||||||
ENode * toggleOffSelected,
|
ENode * offSelected,
|
||||||
const BtnClkCallback & callback = nullptr
|
const BtnClkCallback & callback = nullptr
|
||||||
);
|
);
|
||||||
|
|
||||||
// 创建开关按钮
|
// 创建开关按钮
|
||||||
EButtonToggle(
|
EButtonToggle(
|
||||||
ENode * toggleOnNormal,
|
ENode * onNormal,
|
||||||
ENode * toggleOffNormal,
|
ENode * offNormal,
|
||||||
ENode * toggleOnMouseOver,
|
ENode * onMouseOver,
|
||||||
ENode * toggleOffMouseOver,
|
ENode * offMouseOver,
|
||||||
ENode * toggleOnSelected,
|
ENode * onSelected,
|
||||||
ENode * toggleOffSelected,
|
ENode * offSelected,
|
||||||
const BtnClkCallback & callback = nullptr
|
const BtnClkCallback & callback = nullptr
|
||||||
);
|
);
|
||||||
|
|
||||||
// 创建开关按钮
|
// 创建开关按钮
|
||||||
EButtonToggle(
|
EButtonToggle(
|
||||||
ENode * toggleOnNormal,
|
ENode * onNormal,
|
||||||
ENode * toggleOffNormal,
|
ENode * offNormal,
|
||||||
ENode * toggleOnMouseOver,
|
ENode * onMouseOver,
|
||||||
ENode * toggleOffMouseOver,
|
ENode * offMouseOver,
|
||||||
ENode * toggleOnSelected,
|
ENode * onSelected,
|
||||||
ENode * toggleOffSelected,
|
ENode * offSelected,
|
||||||
ENode * toggleOnDisabled,
|
ENode * onDisabled,
|
||||||
ENode * toggleOffDisabled,
|
ENode * offDisabled,
|
||||||
const BtnClkCallback & callback = nullptr
|
const BtnClkCallback & callback = nullptr
|
||||||
);
|
);
|
||||||
|
|
||||||
// 切换开关状态,并执行回调函数
|
// 切换开关状态(执行回调函数)
|
||||||
void toggle();
|
void toggle();
|
||||||
|
|
||||||
// 获取开关状态
|
// 获取开关状态
|
||||||
bool isToggleOn() const;
|
bool getState() const;
|
||||||
|
|
||||||
// 打开或关闭开关
|
// 设置开关按钮的状态(打开或关闭)
|
||||||
// 仅设置按钮状态,不执行回调函数
|
void setState(
|
||||||
void setToggle(
|
bool bState
|
||||||
bool toggle
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置按钮打开状态下显示的按钮
|
// 设置按钮打开状态下显示的按钮
|
||||||
|
|
@ -749,9 +759,28 @@ public:
|
||||||
ENode * disabled
|
ENode * disabled
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 设置中心点的横向位置
|
||||||
|
// 默认为 0, 范围 [0, 1]
|
||||||
|
virtual void setPivotX(
|
||||||
|
float pivotX
|
||||||
|
) override;
|
||||||
|
|
||||||
|
// 设置中心点的纵向位置
|
||||||
|
// 默认为 0, 范围 [0, 1]
|
||||||
|
virtual void setPivotY(
|
||||||
|
float pivotY
|
||||||
|
) override;
|
||||||
|
|
||||||
|
// 设置中心点位置
|
||||||
|
// 默认为 (0, 0), 范围 [0, 1]
|
||||||
|
virtual void setPivot(
|
||||||
|
float pivotX,
|
||||||
|
float pivotY
|
||||||
|
) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// 刷新按钮开关
|
// 刷新按钮开关
|
||||||
virtual void _updateToggle();
|
virtual void _updateState();
|
||||||
|
|
||||||
// 执行按钮回调函数
|
// 执行按钮回调函数
|
||||||
virtual void _runCallback() override;
|
virtual void _runCallback() override;
|
||||||
|
|
@ -765,7 +794,7 @@ protected:
|
||||||
ENode * m_pSelectedOff;
|
ENode * m_pSelectedOff;
|
||||||
ENode * m_pDisabledOn;
|
ENode * m_pDisabledOn;
|
||||||
ENode * m_pDisabledOff;
|
ENode * m_pDisabledOff;
|
||||||
bool m_bToggle;
|
bool m_bState;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue