Cocos2d-x的学习 程序是如何进入到自己的代码的 Application有趣的地方
2016-08-10 19:12
423 查看
版本:cocos2d-x 3.10 语言:C++
今天有点忙啊,有点忙,昨天的研究暂时缓一下。早上的时候看了一会红孩儿的博客,深感自己的水平十分的不足。
其中一段Application的东西让我摸不着头脑,反复的研究后终于懂了,那时候的版本是1.0吧,现在应该已经是3.0时代了,回去看了看3.10的源代码,发现原理还是一样的。现在我就给大家分享一下。
稍微研究过cocos2d-x的玩家应该都知道,cocos的跨平台是通过不同平台的程序代码进入到统一的AppDelegate类中,然后AppDelegate在applicationDidFinishLaunching方法中会调用第一个场景。
比如win32程序就是通过main.cpp进入的,代码如下:
很简单的代码,不过我是没看懂那个函数传的一堆参数,不过没关系,看看自己能看的。
首先从包含的头文件来看,AppDelegate.h在cocos的想法中是不属于cocos2d中的。然后关注一下最重要的两行:
AppDelegate app;
return Application::getInstance()->run()
普通的来说,不应该是app.run()吗?(app创建的时候不是指针创建的,说明函数完了就会被销毁,也就是说当程序跳出run函数的时候程序就结束了)
我们来看一下getInstance,他的运行实例究竟是从哪里来的:
可以看到这边返回的是保存在内部的一个静态成员。然后在来看一下这边的构造函数:
重点关注的是sm_pSharedApplication = this,还有得知道AppDelegate是继承于Application的。这意味着什么的?
也就是说AppDelegate app;这一句创建的时候会运行构造函数,会把自身传递给sm_pSharedApplication,然后使用静态函数获取到该实例run一下就进入到这里:
运行了AppDelegate实现的applicationDidFinishLaunching方法,然后就进入了自己的代码了。
可能是我见识少了,这种方式的创建从来没见过,平时都是getInstance中直接创建静态实例,如果创建了就返回。看来真的得多看一些底层的代码,了解他们是如何去设计自己的类,毕竟这一些引擎的代码写得比较的专业。还得多多学习啊。
今天有点忙啊,有点忙,昨天的研究暂时缓一下。早上的时候看了一会红孩儿的博客,深感自己的水平十分的不足。
其中一段Application的东西让我摸不着头脑,反复的研究后终于懂了,那时候的版本是1.0吧,现在应该已经是3.0时代了,回去看了看3.10的源代码,发现原理还是一样的。现在我就给大家分享一下。
稍微研究过cocos2d-x的玩家应该都知道,cocos的跨平台是通过不同平台的程序代码进入到统一的AppDelegate类中,然后AppDelegate在applicationDidFinishLaunching方法中会调用第一个场景。
比如win32程序就是通过main.cpp进入的,代码如下:
很简单的代码,不过我是没看懂那个函数传的一堆参数,不过没关系,看看自己能看的。
首先从包含的头文件来看,AppDelegate.h在cocos的想法中是不属于cocos2d中的。然后关注一下最重要的两行:
AppDelegate app;
return Application::getInstance()->run()
普通的来说,不应该是app.run()吗?(app创建的时候不是指针创建的,说明函数完了就会被销毁,也就是说当程序跳出run函数的时候程序就结束了)
我们来看一下getInstance,他的运行实例究竟是从哪里来的:
可以看到这边返回的是保存在内部的一个静态成员。然后在来看一下这边的构造函数:
重点关注的是sm_pSharedApplication = this,还有得知道AppDelegate是继承于Application的。这意味着什么的?
也就是说AppDelegate app;这一句创建的时候会运行构造函数,会把自身传递给sm_pSharedApplication,然后使用静态函数获取到该实例run一下就进入到这里:
运行了AppDelegate实现的applicationDidFinishLaunching方法,然后就进入了自己的代码了。
可能是我见识少了,这种方式的创建从来没见过,平时都是getInstance中直接创建静态实例,如果创建了就返回。看来真的得多看一些底层的代码,了解他们是如何去设计自己的类,毕竟这一些引擎的代码写得比较的专业。还得多多学习啊。
相关文章推荐
- cocos2d-xna-TweeJump学习笔记1(都是自己看别人代码后所感所想,希望有懂的人指出我的错误或者大家交流交流)
- 向身边的巨人学习如何写好代码,刻意去提升自己
- 如何自己编译apue.3e中代码 & 学习写makefile
- MFC如何进入程序进入点(MFC学习)----1
- 向身边的巨人学习如何写好代码,刻意去提升自己
- 《水晶之约》的完整代码以及一些思想很值得学习---优秀程序的代码固然能更提高自己
- 上班无聊,可以自己学习下别的知识或看看自己以前写的代码有没有好的改进的地方
- 如何学习别人的程序代码
- 如何在xcode下面同时安装cocos2d-iphone 和 cocos2d-x模板,其实是因为很喜欢C++的缘故,当时学习的是前者,现在自己摸着石头过河了就(cocos2d-x安装失败 出错)
- SAP ABAP/4学习---如何给写好的一个程序分配事务代码,用户可以直接通过事务码来访问程序.或者加入收藏夹(9)
- 我的Cocos2d-x学习笔记(一)Windows下程序如何开始运行
- 由成幻OnlineJudge学习如何做自己的Acm-Icpc在线评判系统-5.在线编译与测试系统代码粗解
- [cocos2d-x 学习] 如何编译自己的项目(从win32交叉编译到android)
- 程序学习--如何阅读别人的代码
- 如何简要判断自己对.cpp文件的修改是否生效? 如何简要判断程序所进入的预编译分支?
- 一个有趣的程序——可以打印自己第N行代码的程序
- 我的Cocos2d-x学习笔记(一)Windows下程序如何开始运行
- 程序中如何给自己设置硬件断点(通过程序代码设置数据断点而不使用JTAG)
- [搜片神器]winform程序自己如何更新自己的方法代码
- cocos2d-xna-TweeJump学习笔记2(都是自己看别人代码后所感所想,希望有懂的人指出我的错误或者大家交流交流)