记得刚开始工作的时候对cocos2dx的输入看得云里雾里,而这几天要写一些博文总结一下过去一年所学到东西,想了想借此时机把它总结一下。
第一次接触手机开发对移动平台下的消息比较陌生,但是将手机上的各类事件与window的消息做一个对比的话,会比较便于理解。
移动设备的touch事件相当于window平台上的鼠标事件,移动设备的keypad只有回退按钮和菜单按钮,移动设备ime输入与windows的wm_char消息差不多。当明白这些消息的含义之后,那么该如何添加自己的消息处理呢?想知道如何添加自己的处理函数还是需要了解一下cocos2dx中消息分发的机制。
cocos2dx中分发消息的类都是以Dispatcher为后缀的类,如:CCTouchDispatcher,CCKeypadDispatcher,CCIMEDispatcher等。而具体处理类则delegate为后缀的类,有些Dispatcher会以handler类封装delegate类,如CCTouchDispatcher在添加delegate的时候会使用delegate对象初始化handler。
Dispatcher提供相关接口添加delegate,使得具体的对象会获得相关消息。也就是说,如果需要获得消息,那么对象必须继承自各类delegate的父类,这些父类的具体消息处理函数是虚拟的,也就是可以被重载的,这样我们就可以添加自己的消息处理了。
模块相关类:
略
uml图:
使用方式:
略
扩展:
略
第一次接触手机开发对移动平台下的消息比较陌生,但是将手机上的各类事件与window的消息做一个对比的话,会比较便于理解。
移动设备的touch事件相当于window平台上的鼠标事件,移动设备的keypad只有回退按钮和菜单按钮,移动设备ime输入与windows的wm_char消息差不多。当明白这些消息的含义之后,那么该如何添加自己的消息处理呢?想知道如何添加自己的处理函数还是需要了解一下cocos2dx中消息分发的机制。
cocos2dx中分发消息的类都是以Dispatcher为后缀的类,如:CCTouchDispatcher,CCKeypadDispatcher,CCIMEDispatcher等。而具体处理类则delegate为后缀的类,有些Dispatcher会以handler类封装delegate类,如CCTouchDispatcher在添加delegate的时候会使用delegate对象初始化handler。
Dispatcher提供相关接口添加delegate,使得具体的对象会获得相关消息。也就是说,如果需要获得消息,那么对象必须继承自各类delegate的父类,这些父类的具体消息处理函数是虚拟的,也就是可以被重载的,这样我们就可以添加自己的消息处理了。
模块相关类:
略
uml图:
使用方式:
略
扩展:
略