CCKeypadDispatcher(键盘消息分发器 该类主要负责键盘消息的分发,分发到已经注册过的层、精灵等对象(注册了CCKeypadDelegate委托)。)
来源:互联网 发布:apns pusher for mac 编辑:程序博客网 时间:2024/05/08 16:04
#ifndef __CCKEYPAD_DISPATCHER_H__
#define __CCKEYPAD_DISPATCHER_H__
#include "CCKeypadDelegate.h"
#include "cocoa/CCArray.h"
NS_CC_BEGIN
typedef enum {
// the back key clicked msg
kTypeBackClicked = 1,
kTypeMenuClicked,
} ccKeypadMSGType;
struct _ccCArray;
/**
@class CCKeypadDispatcher
@brief Dispatch the keypad message from the phone//分发手机的键盘消息
*/
class CC_DLLCCKeypadDispatcher : public CCObject
{
public:
CCKeypadDispatcher();
~CCKeypadDispatcher();
voidaddDelegate(CCKeypadDelegate* pDelegate);//增加回调键盘消息方法
voidremoveDelegate(CCKeypadDelegate* pDelegate); //移除回调键盘消息方法
voidforceAddDelegate(CCKeypadDelegate* pDelegate);//force 强迫
voidforceRemoveDelegate(CCKeypadDelegate* pDelegate);
booldispatchKeypadMSG(ccKeypadMSGType nMsgType);//分发键盘消息 参数是键盘消息类型 包括kTypeBackClicked kTypeMenuClicked
{
CCKeypadHandler* pHandler = NULL;
CCKeypadDelegate* pDelegate = NULL;
m_bLocked = true;
if (m_pDelegates->count() > 0)
{
CCObject* pObj = NULL;
CCARRAY_FOREACH(m_pDelegates, pObj)
{
CC_BREAK_IF(!pObj);
pHandler = (CCKeypadHandler*)pObj;
pDelegate = pHandler->getDelegate();
switch (nMsgType)
{
case kTypeBackClicked:
pDelegate->keyBackClicked();
break;
case kTypeMenuClicked:
pDelegate->keyMenuClicked();
break;
default:
break;
}
}
}
m_bLocked = false;
if (m_bToRemove)
{
m_bToRemove = false;
for (unsigned int i = 0; i < m_pHandlersToRemove->num; ++i)
{
forceRemoveDelegate((CCKeypadDelegate*)m_pHandlersToRemove->arr[i]);
}
ccCArrayRemoveAllValues(m_pHandlersToRemove);
}
if (m_bToAdd)
{
m_bToAdd = false;
for (unsigned int i = 0; i < m_pHandlersToAdd->num; ++i)
{
forceAddDelegate((CCKeypadDelegate*)m_pHandlersToAdd->arr[i]);
}
ccCArrayRemoveAllValues(m_pHandlersToAdd);
}
return true;
}
protected:
CCArray* m_pDelegates; //消息回调委托 数组
bool m_bLocked;
bool m_bToAdd;
bool m_bToRemove;
struct _ccCArray *m_pHandlersToAdd;
struct _ccCArray *m_pHandlersToRemove;
};
NS_CC_END
#endif //__CCKEYPAD_DISPATCHER_H__
- CCKeypadDispatcher(键盘消息分发器 该类主要负责键盘消息的分发,分发到已经注册过的层、精灵等对象(注册了CCKeypadDelegate委托)。)
- 消息的分发与处理
- android触摸消息的分发
- Android JB 4.2 中InputManager 分发键盘消息给应用程序的过程分析--2 未完待续。。。。
- windows键盘的过滤(HOOK分发函数)
- as3 消息分发器
- Android输入子系统之InputDispatcher分发键盘消息过程分析
- webkit的键盘事件分发过程
- 基于id的游戏客户端事件分发(消息队列)
- 基于id的游戏客户端事件分发(消息队列)
- CCKeypadDelegate(Delegate 授权; 委托 ; 派…代表 ;键盘事件委托,就是系统捕捉到键盘事件后交由它或者它的子类处理 )
- 项目中用到的一个消息分发机制
- 嵌套协议的消息分发处理
- 上报和分发消息的流程
- cocos2d-x的触摸消息分发机制
- 上报和分发消息的流程
- 上报和分发消息的流程
- 服务器端的消息分发和路由机制
- java socket参数详解:SoLinger
- POJ 3233 Matrix Power Series (矩阵快速幂 + 二分)
- CCGrabber(将屏幕画面渲染到纹理的处理器)
- java 文件排序
- 23种设计模式中的单一职责原则
- CCKeypadDispatcher(键盘消息分发器 该类主要负责键盘消息的分发,分发到已经注册过的层、精灵等对象(注册了CCKeypadDelegate委托)。)
- 什么是HTTP Headers
- CCS2000之profiler问题
- hookup_2.10-0.2.3.jar包下载
- Builder(建造者)
- mpstat使用方法
- lazy=false和lazy=true的区别
- 基于11GR2的PSU补丁安装
- CCKeypadDelegate(Delegate 授权; 委托 ; 派…代表 ;键盘事件委托,就是系统捕捉到键盘事件后交由它或者它的子类处理 )