好久没有写博文了。。。
最近在学习cococs2d-x这一个跨多个平台的游戏引擎,以后准备用于android上面的游戏开发。
我选择在win32下学习,并进行开发,做好以后移植到android平台上。
这样做我觉得还算是比较方便的,如果各位大牛还有什么好的办法,给我也教一教~
搭建cocos2d-x的环境之类的我就不再这里多说了,不懂的可以google之,此处我用的是VS2010
学习一款游戏引擎当然是先来个HelloWorld了。
使用VS2010的向导可以生成一个HelloWorld的cocos2d-x的项目。
项目生成后会解决方案下包含三个子目录(编译运行之后还会生成一个)
1、Classes:主要进行编写的代码存放的位置
2、Resources:项目中用到的资源存放的位置
3、win32:针对win32平台下的一些相关文件,包含程序的入口方法_tWinMain。
程序入口:
_tWinMain方法
1、首先会产生一个AppDelegate的对象来表示当前应用的实例,AppDelegate私有继承自CCApplication。
2、CCApplication的sharedApplication会返回当前应用实例的指针。在此处即为AppDelegate的指针。
AppDelegate类:(AppDelegate私有继承自CCApplication)
AppDelegate():构造函数,main中产生AppDelegate实例时被调用
virtual ~AppDelegate():析构函数,程序退出时被调用
virtual bool initInstance():用来初始化OpenGL实例,设置资源的路径等初始化
virtual bool applicationDidFinishLaunching():用来初始化CCDirector和CCScene
virtual void applicationDidEnterBackground():The function be called when the application enter background
virtual void applicationWillEnterForeground():The function be called when the application enter foreground
HelloWorld类:(HelloWorld公共继承CCLayer)
virtual bool init():对CCLayer初始化
static cocos2d::CCScene* scene():该方法时一个类方法,产生一个Scene并且将CCLayer的对象加到CCScene上
virtual void menuCloseCallback(CCObject* pSender):对关闭按钮的点击进行响应的方法
补充:
cocos2d-X中绘制一个界面的规则是:首先绘制一个场景CCScene,然后再CCScene上面可以添加层CCLayer。类似于PS中的层。
CCLayer和CCScene的继承关系是
CCNode
|--CCScene
|--CCLayer
CCNode包含有下列两个虚函数方法:
onEnter():在Layer可见时被调用,在后台运行重新返回前台时也会被调用。
onExit():与onEnter相反。
onEnter和onExit他们的区别是
CCNode子类的构造函数和析构函数只会被调用一次,而onEnter和onExit则会被调用不定数次。