Cocos2d-x 层类CCLayer

层的作用主要有两个
一是容纳精灵等节点,使它们被包含进场景(层的父节点肯定是场景,因为导演类只能和场景实例相关联);
二是接收用户的输入操作,这里cocos2d打了一个标签,分别实现iphonemac的处理逻辑,因为二者的输入方式有差异,iphone支持重力感应,而mac支持鼠标和键盘。

参数

BOOL isTouchEnabled//是否支持触摸响应。

BOOL isAccelerometerEnabled //是否支持重力感应。

方法

- (id)init

重构的初始化方法,和CCScene一样,设置了锚点和宽高(和屏幕一样),此外还将isTouchEnabledisAccelerometerEnabled置为NO。

- (void)registerWithTouchDispatcher

将自己注册进CCTouchDispatch,这是管理触摸信息的类,在该类注册的对象才有被分发到触摸信息的可能

- (BOOL)isAccelerometerEnabled

返回对象的isAccelerometerEnabled,即检测该层是否支持重力感应。

- (void)setAccelerometerEnabled:(BOOL)enabled

设置对象的的isAccelerometerEnabled,使其允许或拒绝对重力的感应。

- (BOOL)isTouchEnabled

返回对象的isTouchEnabled,即检测该层是否支持触摸响应。

- (void)setTouchEnabled:(BOOL)enabled

设置对象的的isTouchEnabled,使其允许或拒绝对触摸的响应。如果允许,会向CCTouchDispatch注册,如果不允许则注销。

- (void)onEnter

CCNode的基础上添加了一个判断,如果支持触摸则执行registerWithTouchDispatcher

- (void)onEnterTransitionDidFinish

只在父类基础上增加了一个功能,就是当对象支持重力感应的时候,设置自己为UIAccelerometer单例的代理,此时当终端发生晃动时,该对象会被回调,但回调函数- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration并未声明,需要开发者自行扩展。

- (void)onExit

就是在父类的基础上,增加了对CCTouchDispatcher的注销和取消对UIAccelerometer的代理(如果有触摸和重力感应的话)

你可能感兴趣的:(Cocos2d-x 层类CCLayer)