我学cocos2d-x (三) Node:一切可视化对象的祖先

在cocos2d-x中一切可视化的对象都继承自Node(如文字(label)、精灵(sprite)、场景(scene)、布局(layer)),这是一个纯虚类,主要负责决定元素显示的位置。


由导演(Director)负责场景(Scene)的切换,在场景中添加不同的布局(Layer),这里有一个zOrder的值,只有处于同一个zOrder中的Layer才能进行交互。


Scene和Layer在对象显示中起到了比较主要的作用,我们一般都是在Scene和Layer中来处理可视化对象的布局、碰撞、分数等状态的显示。


Scene是一个抽象类,仅用于根据对象的像素坐标把对象放置到场景中正确的位置。


Layer类本身没有特殊的功能,但它可以用于接收触摸事件和加速输入。


在Node中又几个比较重要的方法需要在子类中实现:


virtual bool init() override;

在cococs2d-x中,使用init方法进行初始化,在这个方法中,需要调用父类的init方法,然后可以进行子类的初始化,此方法返回false表示初始化失败,cocos2d-x不会进行界面的绘制。


static Layer *create();

用于创建和初始化Node对象,在子类中使用CREATE_FUNC这个宏来实现此方法,这样就实现了子类构造函数和init方法的调用:


#define CREATE_FUNC(__TYPE__) \

static __TYPE__* create() \

{ \

    __TYPE__ *pRet = new __TYPE__(); \

    if (pRet && pRet->init()) \

    { \

        pRet->autorelease(); \

        return pRet; \

    } \

    else \

    { \

        delete pRet; \

        pRet = NULL; \

        return NULL; \

    } \

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值