事件处理:
- 事件监听和事件监听绑定
- 通知中心
- Input输入框的使用
事件监听和事件监听绑定
事件监听处理,有个重要的类EventDispatcher:
这个类管理事件监听器的订阅和事件的分发
其常用的成员函数:
voidaddEventListenerWithSceneGraphPriority(EventListener*listener,Node*node)
给一个指定的事件添加一个事件监听器,该监听器带有基于场景图的优先级 。
参数:listener 指定事件的监听器。 node 监听器的优先级基于此节点的绘制顺序。
给一个指定的事件添加一个事件监听器,该监听器带有基于场景图的优先级 。
参数:listener 指定事件的监听器。 node 监听器的优先级基于此节点的绘制顺序。
voidaddEventListenerWithFixedPriority(EventListener*listener,int fixedPriority)
为指定的事件添加一个固定优先级事件监听器。
为指定的事件添加一个固定优先级事件监听器。
参数:listener 指定事件的监听器。 fixedPriority 监听器的固定优先级。
EventListenerCustom*addCustomEventListener(const std::string &eventName,const std::function< void(EventCustom*)> &callback)
添加一个自定义事件监听器。 该监听器会使用值为1的一个固定优先级.
添加一个自定义事件监听器。 该监听器会使用值为1的一个固定优先级.
下面是各种类型的监听类,我们把需要的用到的监听类安所需的顺序添加到EventDispatcher即可。
主要的监听类:
EventListenerAcceleration 重力感应
EventListenerCustom 用户自定义事件
EventListenerFocus 聚焦监听
EventListenerKeyboard 键盘监听
EventListenerMouse 鼠标监听
EventListenerPhysicsContactWithBodies 碰撞监听器
EventListenerPhysicsContactWithGroup 碰撞监听器
EventListenerPhysicsContactWithShapes 碰撞监听器
EventListenerTouchAllAtOnce 多点触碰
EventListenerTouchOneByOne 单点触碰
EventListenerController 游戏手柄监听类
EventListenerCustom 用户自定义事件
EventListenerFocus 聚焦监听
EventListenerKeyboard 键盘监听
EventListenerMouse 鼠标监听
EventListenerPhysicsContactWithBodies 碰撞监听器
EventListenerPhysicsContactWithGroup 碰撞监听器
EventListenerPhysicsContactWithShapes 碰撞监听器
EventListenerTouchAllAtOnce 多点触碰
EventListenerTouchOneByOne 单点触碰
EventListenerController 游戏手柄监听类
启动添加监听的例子:
auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(LayerTest1::onTouchesBegan,this); listener->onTouchesMoved = CC_CALLBACK_2(LayerTest1::onTouchesMoved,this); listener->onTouchesEnded = CC_CALLBACK_2(LayerTest1::onTouchesEnded,this); EventDispatcher *_eventDispatcher; _eventDispatcher->addEventListenerWithSceneGraPHPriority(listener,this);
通知中心
消息传递和接收,类似android里的广播机制
主要函数:
void addObserver(Ref *target,SEL_CallFuncO selector,const std::string& name,Ref *sender);
void removeObserver(Ref *target,const std::string& name);
使用时:
NotificationCenter::getInstance()->addObserver(Ref *target,Ref *sender); NotificationCenter::getInstance()->postNotification(const std::string& name,Ref *sender); NotificationCenter::getInstance()->removeObserver(Ref *target,const std::string& name);
Input输入框的使用
auto pTextField = TextFieldTTF::textFieldWithPlaceHolder("<click here for input>",FONT_NAME,FONT_SIZE); addChild(pTextField);
EventListenerCustom
cocos2d
EventListenerFocus
cocos2d
EventListenerKeyboard
cocos2d
EventListenerMouse
cocos2d
EventListenerPhysicsContact
cocos2d
EventListenerTouchAllAtOnce
cocos2d
EventListenerTouchOneByOne
cocos2d