新增可以在游戏暂停时运行的监听器
This commit is contained in:
parent
109a86e19f
commit
c23d7e4066
|
|
@ -42,3 +42,8 @@ void e2d::EListener::setName(const EString & name)
|
|||
{
|
||||
m_sName = name;
|
||||
}
|
||||
|
||||
void e2d::EListener::setAlwaysWorking(bool bAlways)
|
||||
{
|
||||
m_bAlways = bAlways;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,17 +60,17 @@ void e2d::EMsgManager::KeyboardProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
}
|
||||
|
||||
void e2d::EMsgManager::bindListener(e2d::EListenerMouse * listener, EScene * pParentScene, bool always /* = false */)
|
||||
void e2d::EMsgManager::bindListener(e2d::EListenerMouse * listener, EScene * pParentScene)
|
||||
{
|
||||
EMsgManager::bindListener(listener, pParentScene->getRoot(), always);
|
||||
EMsgManager::bindListener(listener, pParentScene->getRoot());
|
||||
}
|
||||
|
||||
void e2d::EMsgManager::bindListener(EListenerKeyboard * listener, EScene * pParentScene, bool always /* = false */)
|
||||
void e2d::EMsgManager::bindListener(EListenerKeyboard * listener, EScene * pParentScene)
|
||||
{
|
||||
EMsgManager::bindListener(listener, pParentScene->getRoot(), always);
|
||||
EMsgManager::bindListener(listener, pParentScene->getRoot());
|
||||
}
|
||||
|
||||
void e2d::EMsgManager::bindListener(EListenerMouse * listener, ENode * pParentNode, bool always /* = false */)
|
||||
void e2d::EMsgManager::bindListener(EListenerMouse * listener, ENode * pParentNode)
|
||||
{
|
||||
WARN_IF(listener == nullptr, "EListenerMouse NULL pointer exception!");
|
||||
WARN_IF(pParentNode == nullptr, "Bind EListenerMouse with a NULL ENode pointer!");
|
||||
|
|
@ -84,13 +84,12 @@ void e2d::EMsgManager::bindListener(EListenerMouse * listener, ENode * pParentNo
|
|||
|
||||
listener->start();
|
||||
listener->retain();
|
||||
listener->m_bAlways = always;
|
||||
listener->m_pParentNode = pParentNode;
|
||||
s_vMouseListeners.push_back(listener);
|
||||
}
|
||||
}
|
||||
|
||||
void e2d::EMsgManager::bindListener(EListenerKeyboard * listener, ENode * pParentNode, bool always /* = false */)
|
||||
void e2d::EMsgManager::bindListener(EListenerKeyboard * listener, ENode * pParentNode)
|
||||
{
|
||||
WARN_IF(listener == nullptr, "EListenerKeyboard NULL pointer exception!");
|
||||
WARN_IF(pParentNode == nullptr, "Bind EListenerKeyboard with a NULL ENode pointer!");
|
||||
|
|
@ -105,7 +104,6 @@ void e2d::EMsgManager::bindListener(EListenerKeyboard * listener, ENode * pParen
|
|||
listener->start();
|
||||
listener->retain();
|
||||
listener->m_pParentNode = pParentNode;
|
||||
listener->m_bAlways = always;
|
||||
s_vKeyboardListeners.push_back(listener);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,11 +109,14 @@ void e2d::EButton::setDisable(bool disable)
|
|||
|
||||
void e2d::EButton::setCallback(const BUTTON_CLICK_CALLBACK & callback)
|
||||
{
|
||||
EMsgManager::stopAllMouseListenersBindedWith(this);
|
||||
|
||||
auto listener = new EListenerMouse(std::bind(&EButton::_listenerCallback, this));
|
||||
EMsgManager::bindListener(listener, this, true);
|
||||
m_Callback = callback;
|
||||
|
||||
// 停止其他监听器
|
||||
EMsgManager::stopAllMouseListenersBindedWith(this);
|
||||
// 新建一个监听器
|
||||
auto listener = new EListenerMouse(std::bind(&EButton::_listenerCallback, this));
|
||||
listener->setAlwaysWorking(true);
|
||||
EMsgManager::bindListener(listener, this);
|
||||
}
|
||||
|
||||
void e2d::EButton::_callOn()
|
||||
|
|
|
|||
|
|
@ -42,6 +42,11 @@ public:
|
|||
const EString &name
|
||||
);
|
||||
|
||||
// 设置监听器在游戏暂停时继续工作
|
||||
void setAlwaysWorking(
|
||||
bool bAlways
|
||||
);
|
||||
|
||||
// 绑定监听器到场景
|
||||
virtual void bindWith(
|
||||
EScene * pParentScene
|
||||
|
|
|
|||
|
|
@ -47,15 +47,13 @@ public:
|
|||
// 绑定鼠标消息监听器到场景
|
||||
static void bindListener(
|
||||
EListenerMouse * listener,
|
||||
EScene * pParentScene,
|
||||
bool always = false /* 是否在游戏暂停时仍然监听 */
|
||||
EScene * pParentScene
|
||||
);
|
||||
|
||||
// 绑定鼠标消息监听器到节点
|
||||
static void bindListener(
|
||||
EListenerMouse * listener,
|
||||
ENode * pParentNode,
|
||||
bool always = false /* 是否在游戏暂停时仍然监听 */
|
||||
ENode * pParentNode
|
||||
);
|
||||
|
||||
// 启动具有相同名称的鼠标消息监听器
|
||||
|
|
@ -102,15 +100,13 @@ public:
|
|||
// 绑定按键消息监听器到场景
|
||||
static void bindListener(
|
||||
EListenerKeyboard * listener,
|
||||
EScene * pParentScene,
|
||||
bool always = false /* 是否在游戏暂停时仍然监听 */
|
||||
EScene * pParentScene
|
||||
);
|
||||
|
||||
// 绑定按键消息监听器到节点
|
||||
static void bindListener(
|
||||
EListenerKeyboard * listener,
|
||||
ENode * pParentNode,
|
||||
bool always = false /* 是否在游戏暂停时仍然监听 */
|
||||
ENode * pParentNode
|
||||
);
|
||||
|
||||
// 启动名称相同的按键消息监听器
|
||||
|
|
|
|||
Loading…
Reference in New Issue