美文网首页
Cocos2d-x 层类CCLayer

Cocos2d-x 层类CCLayer

作者: 白小白152 | 来源:发表于2020-11-12 10:17 被阅读0次

    层的作用主要有两个
    一是容纳精灵等节点,使它们被包含进场景(层的父节点肯定是场景,因为导演类只能和场景实例相关联);
    二是接收用户的输入操作,这里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

          本文链接:https://www.haomeiwen.com/subject/tnbubktx.html