cocos2d 中 scene(), create(), init() 调用关系

cocos2d 中 scene(), create(), init() 调用关系,第1张

概述原文   http://blog.csdn.net/ironyoung/article/details/39546009 最近在学cocos2d,刚上手时对示例程序的函数调用关系不是很清楚。昨晚刚刚搞清楚,记录下。 1. 首先来看main函数: AppDelegate app; // 创建一个AppDelegate对象 ... return CCApplication::share 原文

http://blog.csdn.net/ironyoung/article/details/39546009


最近在学cocos2d,刚上手时对示例程序的函数调用关系不是很清楚。昨晚刚刚搞清楚,记录下。

1. 首先来看main函数:

AppDelegate app; // 创建一个AppDelegate对象    ...    return CCApplication::sharedApplication()->run(); // 运行 app 对象

2. 再看 AppDelegate 类:

virtual bool applicationDIDFinishLaunching(); // CCApplication::sharedApplication()->run(); 之后首先执行此函数// Implement CCDirector and CCScene init code here.bool AppDelegate::applicationDIDFinishLaunching() {  ...  // create a scene. it's an autorelease object  CCScene *pScene = HelloWorld::scene();  pDirector->runWithScene(pScene);  return true;}

调用了层类(Layer)HelloWorld 的scene() 方法,并且通过 CCDirector 的一个实例来执行。

3. 最后看 HelloWorld 的 scene() 方法

CCScene* HelloWorld::scene(){  // 'scene' is an autorelease object  CCScene *scene = CCScene::create();    'layer' is an autorelease object  HelloWorld *layer = HelloWorld::create();  // add layer as a child to scene  scene->addChild(layer);  // return the scene  return scene;}

这时候会有疑问,那 HelloWorld::init() 方法在哪儿使用了?而且 HelloWorld 哪儿有 create() 方法?

这个时候,定位create() 方法,指向 CREATE_FUNC(HelloWorld);

/** * define a create function for a specific type,such as cclayer * @__TYPE__ class type to add create(),such as cclayer */#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; \  } \}

根据宏定义可以知道,create() 即为CREATE_FUNC();将__TYPE__换成 HelloWorld 之后,则在 if 判断中调用了 init() 函数

4.总结

调用顺序为 main() -> AppDelegate->HelloWorld::scene()-> CREATE_FUNC()-> init()

总结

以上是内存溢出为你收集整理的cocos2d 中 scene(), create(), init() 调用关系全部内容,希望文章能够帮你解决cocos2d 中 scene(), create(), init() 调用关系所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存