以 CCLayer 为例,在这个方法中,两者都是可以添加到 scene 中的

StartLayer *startlayer=StartLayer::create();
    addChild(startlayer);
StartLayer *startlayer=new StartLayer();
    addChild(startlayer);

但是两者是有区别的

如果调用的 new() 方法,那么只是调用了 StartLayer 类的构造函数

而如果调用的 create()方法,则是先调用构造函数,然后再调用 init() 函数

这个是因为 create 方法里面已经写好了,就是这个宏定义

#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; \
    } \
}

最后再赘述一点就是三个的调用顺序

new()->init()->onenter()



☟☟可点击下方广告支持一下☟☟

最后修改:1970 年 01 月 01 日
请我喝杯可乐,请随意打赏: ☞已打赏列表