2017-10-13 20:17:20 +08:00
|
|
|
|
#include "..\emsg.h"
|
|
|
|
|
|
#include "..\Win\winbase.h"
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
e2d::EMouseMsg mouseMsg;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
e2d::EKeyMsg keyMsg;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
std::vector<e2d::EMouseListener*> s_vMouseListeners;
|
2017-10-13 20:17:20 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
std::vector<e2d::EKeyboardListener*> s_vKeyListeners;
|
2017-10-13 20:17:20 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DWORD e2d::EMouseMsg::getX()
|
|
|
|
|
|
{
|
|
|
|
|
|
return LOWORD(mouseMsg.m_lParam);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DWORD e2d::EMouseMsg::getY()
|
|
|
|
|
|
{
|
|
|
|
|
|
return HIWORD(mouseMsg.m_lParam);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
e2d::EPoint e2d::EMouseMsg::getPos()
|
|
|
|
|
|
{
|
|
|
|
|
|
return EPoint(LOWORD(mouseMsg.m_lParam), HIWORD(mouseMsg.m_lParam));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EMouseMsg::isLButtonDown()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_LBUTTON;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EMouseMsg::isMButtonDown()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_MBUTTON;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EMouseMsg::isRButtonDown()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_RBUTTON;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EMouseMsg::isShiftDown()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_SHIFT;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EMouseMsg::isCtrlDown()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_CONTROL;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DWORD e2d::EMouseMsg::getWheelDelta()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GET_WHEEL_DELTA_WPARAM(mouseMsg.m_wParam);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
e2d::EMouseMsg::MOUSE_MSG e2d::EMouseMsg::getMsg()
|
|
|
|
|
|
{
|
|
|
|
|
|
return MOUSE_MSG(mouseMsg.m_nMsg);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e2d::EKeyMsg::KEYBOARD_MSG e2d::EKeyMsg::getMsg()
|
|
|
|
|
|
{
|
|
|
|
|
|
return KEYBOARD_MSG(keyMsg.m_nMsg);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
e2d::EKeyMsg::KEY e2d::EKeyMsg::getVal()
|
|
|
|
|
|
{
|
|
|
|
|
|
return KEY(keyMsg.m_wParam);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DWORD e2d::EKeyMsg::getCount()
|
|
|
|
|
|
{
|
|
|
|
|
|
return (((DWORD)keyMsg.m_lParam) & 0x0000FFFF);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EKeyMsg::isKeyDown(KEY key)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (::GetAsyncKeyState((int)key) & 0x8000)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EKeyMsg::isCapitalLockOn()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (::GetKeyState(VK_CAPITAL) & 0x0001)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EKeyMsg::isNumpadLockOn()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (::GetKeyState(VK_NUMLOCK) & 0x0001)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool e2d::EKeyMsg::isScrollLockOn()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (::GetKeyState(VK_SCROLL) & 0x0001)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::MouseProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
mouseMsg.m_nMsg = message;
|
|
|
|
|
|
mouseMsg.m_wParam = wParam;
|
|
|
|
|
|
mouseMsg.m_lParam = lParam;
|
|
|
|
|
|
// ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto mlistener : s_vMouseListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (mlistener->isRunning())
|
|
|
|
|
|
{
|
|
|
|
|
|
mlistener->runCallback();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::KeyboardProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD>水<EFBFBD><E6B0B4><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
keyMsg.m_nMsg = message;
|
|
|
|
|
|
keyMsg.m_wParam = wParam;
|
|
|
|
|
|
keyMsg.m_lParam = lParam;
|
|
|
|
|
|
// ִ<>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto klistener : s_vKeyListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (klistener->isRunning())
|
|
|
|
|
|
{
|
|
|
|
|
|
klistener->runCallback();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-14 01:07:34 +08:00
|
|
|
|
void e2d::EMsgManager::bindListenerWithScene(e2d::EMouseListener * listener, EScene * pParentScene)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
WARN_IF(listener == nullptr, "EMouseListener NULL pointer exception!");
|
|
|
|
|
|
WARN_IF(pParentScene == nullptr, "Bind EMouseListener with a NULL EScene pointer!");
|
2017-10-13 20:17:20 +08:00
|
|
|
|
|
|
|
|
|
|
if (listener && pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
listener->start();
|
|
|
|
|
|
listener->retain();
|
2017-10-14 01:07:34 +08:00
|
|
|
|
listener->bindWithScene(pParentScene);
|
|
|
|
|
|
s_vMouseListeners.push_back(listener);
|
2017-10-13 20:17:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-14 01:07:34 +08:00
|
|
|
|
void e2d::EMsgManager::bindListenerWithScene(e2d::EKeyboardListener * listener, EScene * pParentScene)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
WARN_IF(listener == nullptr, "EKeyboardListener NULL pointer exception!");
|
|
|
|
|
|
WARN_IF(pParentScene == nullptr, "Bind EKeyboardListener with a NULL EScene pointer!");
|
2017-10-13 20:17:20 +08:00
|
|
|
|
|
|
|
|
|
|
if (listener && pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
listener->start();
|
|
|
|
|
|
listener->retain();
|
2017-10-14 01:07:34 +08:00
|
|
|
|
listener->bindWithScene(pParentScene);
|
|
|
|
|
|
s_vKeyListeners.push_back(listener);
|
2017-10-13 20:17:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::startListener(EString name)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vMouseListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getName() == name)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->start();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vKeyListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getName() == name)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->start();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::stopListener(EString name)
|
|
|
|
|
|
{
|
|
|
|
|
|
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vMouseListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getName() == name)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vKeyListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getName() == name)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::delListener(EString name)
|
|
|
|
|
|
{
|
|
|
|
|
|
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
std::vector<EMouseListener*>::iterator mIter;
|
|
|
|
|
|
for (mIter = s_vMouseListeners.begin(); mIter != s_vMouseListeners.end();)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
if ((*mIter)->getName() == name)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
(*mIter)->autoRelease();
|
|
|
|
|
|
(*mIter)->release();
|
|
|
|
|
|
mIter = s_vMouseListeners.erase(mIter);
|
2017-10-13 20:17:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
mIter++;
|
2017-10-13 20:17:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
std::vector<EKeyboardListener*>::iterator kIter;
|
|
|
|
|
|
for (kIter = s_vKeyListeners.begin(); kIter != s_vKeyListeners.end();)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
if ((*kIter)->getName() == name)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
(*kIter)->autoRelease();
|
|
|
|
|
|
(*kIter)->release();
|
|
|
|
|
|
kIter = s_vKeyListeners.erase(kIter);
|
2017-10-13 20:17:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2017-10-14 01:07:34 +08:00
|
|
|
|
kIter++;
|
2017-10-13 20:17:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-14 01:07:34 +08:00
|
|
|
|
void e2d::EMsgManager::startAllMouseListener()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (auto l : s_vMouseListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!l->isWaiting())
|
|
|
|
|
|
{
|
|
|
|
|
|
l->start();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::stopAllMouseListener()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (auto l : s_vMouseListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!l->isWaiting())
|
|
|
|
|
|
{
|
|
|
|
|
|
l->stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::clearAllMouseListeners()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (auto l : s_vMouseListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->autoRelease();
|
|
|
|
|
|
l->release();
|
|
|
|
|
|
}
|
|
|
|
|
|
s_vMouseListeners.clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::startAllKeyboardListener()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (auto l : s_vKeyListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!l->isWaiting())
|
|
|
|
|
|
{
|
|
|
|
|
|
l->start();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::stopAllKeyboardListener()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (auto l : s_vKeyListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!l->isWaiting())
|
|
|
|
|
|
{
|
|
|
|
|
|
l->stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::clearAllKeyboardListeners()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (auto l : s_vKeyListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->autoRelease();
|
|
|
|
|
|
l->release();
|
|
|
|
|
|
}
|
|
|
|
|
|
s_vKeyListeners.clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::startAllMouseListenersBindWithScene(EScene * pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vMouseListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->start();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::stopAllMouseListenersBindWithScene(EScene * pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vMouseListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::startAllKeyboardListenersBindWithScene(EScene * pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vKeyListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->start();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::stopAllKeyboardListenersBindWithScene(EScene * pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vKeyListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == pParentScene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::waitAllListenersBindWithScene(EScene * scene)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vMouseListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == scene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->wait();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD>𰴼<EFBFBD><F0B0B4BC><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vKeyListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == scene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->wait();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-14 01:07:34 +08:00
|
|
|
|
void e2d::EMsgManager::notifyAllListenersBindWithScene(EScene * scene)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vMouseListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == scene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->notify();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-14 01:07:34 +08:00
|
|
|
|
for (auto l : s_vKeyListeners)
|
2017-10-13 20:17:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentScene() == scene)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->notify();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-14 01:07:34 +08:00
|
|
|
|
void e2d::EMsgManager::clearAllListenersBindWithScene(EScene * scene)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::vector<EMouseListener*>::iterator mIter;
|
|
|
|
|
|
for (mIter = s_vMouseListeners.begin(); mIter != s_vMouseListeners.end();)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((*mIter)->getParentScene() == scene)
|
|
|
|
|
|
{
|
|
|
|
|
|
(*mIter)->autoRelease();
|
|
|
|
|
|
(*mIter)->release();
|
|
|
|
|
|
mIter = s_vMouseListeners.erase(mIter);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
mIter++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
std::vector<EKeyboardListener*>::iterator kIter;
|
|
|
|
|
|
for (kIter = s_vKeyListeners.begin(); kIter != s_vKeyListeners.end();)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((*kIter)->getParentScene() == scene)
|
|
|
|
|
|
{
|
|
|
|
|
|
(*kIter)->autoRelease();
|
|
|
|
|
|
(*kIter)->release();
|
|
|
|
|
|
kIter = s_vKeyListeners.erase(kIter);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
kIter++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::waitAllListenersBindWithNode(ENode * pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vMouseListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentNode() == pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->wait();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD>𰴼<EFBFBD><F0B0B4BC><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vKeyListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentNode() == pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->wait();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::notifyAllListenersBindWithNode(ENode * pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vMouseListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentNode() == pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->notify();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (auto l : s_vKeyListeners)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (l->getParentNode() == pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
l->notify();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void e2d::EMsgManager::clearAllListenersBindWithNode(ENode * pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::vector<EMouseListener*>::iterator mIter;
|
|
|
|
|
|
for (mIter = s_vMouseListeners.begin(); mIter != s_vMouseListeners.end();)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((*mIter)->getParentNode() == pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
(*mIter)->autoRelease();
|
|
|
|
|
|
(*mIter)->release();
|
|
|
|
|
|
mIter = s_vMouseListeners.erase(mIter);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
mIter++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
std::vector<EKeyboardListener*>::iterator kIter;
|
|
|
|
|
|
for (kIter = s_vKeyListeners.begin(); kIter != s_vKeyListeners.end();)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((*kIter)->getParentNode() == pParentNode)
|
|
|
|
|
|
{
|
|
|
|
|
|
(*kIter)->autoRelease();
|
|
|
|
|
|
(*kIter)->release();
|
|
|
|
|
|
kIter = s_vKeyListeners.erase(kIter);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
kIter++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|