监听器

Cocos2d-js 事件处理机制

在Cocos2d-xv3.x中,关于事件的东西,无非就是围绕上述的三个部分展开来的,掌握了上述的三个部分,也就掌握了Cocos2d-xv3.x中事件处理的精髓。CoCos2d-x提供一个事件分发器负责管理这种关系,具体说事件分发器负责注册监听器、注销监听器和事件分发。如果返回false,之后的onTouchMoved、onTouchEnded和onTouchCancelled函数将不会响应,車件分发器则会将此次事件继续交给其他添加过事件的监听器进行处理。

Cocos2d-x 事件分发机制

新事件分发机制新事件分发机制:在新的事件分发机制中,只需通过创建一个事件监听器-用来实现各种触发后的逻辑,然后添加到事件分发器_eventdispatcher,所有事件监听器有这个分发器统一管理,即可完成事件响应。上面的自定义事件将由以下代码触发:定义一个EventCustom,并且设置了其UserData数据,手动的通过_eventdispatcher->dispatchEvent;将此事件分发出去,从而触发之前所实现的逻辑。

cocos2d-js 自定义监听 EventCustom

它的工作需要三部分组成:事件管理器cc.eventManager事件类型cc.EventTouch,cc.EventKeyboard等事件监听器cc.EventListenerTouch,cc.EventListenerKeyboard等监听器实现了各种触发后的逻辑,在适当时候由事件管理器分发事件类型,然后调用相应类型的监听器。另外,有一点非常重要,FixedPriority类型的listener添加完之后需要手动remove,而SceneGraPHPriority类型的listener是跟node绑定的

Cocos2d-X 3.0 事件分发机制

事件Cocos2d-JSv3.x中事件分发机制进行了重写,事件可以与任意对象绑定,而不是只有Layer才能获取。对于事件分发,cocos2d官方定义为:当事件发生,Eventdispatcher会发布事件对象到合适的EventListeners,并调用你的回调。如果onTouchBegan返回true,且swallowtouches为true,则事件被吞没,事件的顺序传递则被阻止。swallowtouches属性设置是否吃掉事件,事件被吃掉后不会递给下一层监听器。

cocos2dx 3.X 触摸吞噬功能

cocos里面是不自带对话框的,所以需要自己制作。_eventdispatcher是cocos内置的事件分发器,无需声明直接使用就好。

Cocos2dx引擎笔记——事件分发机制

事件监听器有以下几种:触摸事件键盘响应事件鼠标响应事件自定义事件加速记录事件事件分发器_eventdispatcher的工作由三部分组成:事件分发器Eventdispatcher事件类型EventTouch,EventKeyboard等事件监听器EventListenerTouch,EventListenerKeyboard等监听器实现了各种触发后的逻辑,在适当时候由事件分发器分发事件类型,然后调用相应类型的监听器。

认识 Cocos2dx 3.x

cpp11:支持了auto标识符,这样可以大大简化了声明变量的类型auto标识符:泛类定义nullptr代替NULL,NULL只代表内存地址位为0,这样做有时会出问题,cpp11后尽量用nullptrstatic_castobj相当于c语言的(Class)obj,dynamic_cast更智能,无法转换会返回nullptr设置指针型布尔std::shared_ptrena

cocos2d3.2 事件机制源码分析

cocos2d的事件分成7种:TOUCH,KEYBOARD,acceleration,MOUSE,FOCUS,GAME_CONTROLLER,CUSTOM,分别为触摸,键盘,加速,鼠标,聚焦,游戏控制器和自定义事件。下面分为两个步骤来分析源码:1----注册监听器cocos2d提供了两种注册监听器的方式:addEventListenerWithFixedPriority和addEventListenerWithSceneGraPHPriority。前者参数中有一个优先级,后者将监听器绑定到一个节点,所以l