cocos2d-x学习笔记01

前段时间开始看Cocos2d-x这个强大的游戏开发引擎。在部署helloworld的时候总结了一些问题。
1.android版本helloworld的部署遇到了一些问题,希望对同样碰到这些问题的同志有所帮助。

(1)load file from helloworld.png failed ,
这种情况中,解决办法是回到项目中查看一下 是否assest文件夹是空的,如果是则可以直接右键点击工程,选择import 选项,然后general,然后filesystem,接着找到项目目录下一个叫做Resources的目录选择即可,在看一下assest目录发现有了图片资源。
(2)编译失败提示simpleaudioengine.cpp报错,那就打开这个文件找到报错的哪一行,应该是一个log报错了,注释掉就行了,后面可能会有其他的类报错一样的处理方式。
(3)android.mk文件出现问题。这里可能出现的问题就是 CocosDension/android找不到,这就需要配置COCOS2DX_ROOT变量了。可以直接配置在系统环境变量中。假如在android.mk中直接配置了该路径,则注意该路径结尾一定是最后一级的文件夹名 而没有“/”符号(因为在项目中该路径CocosDension/android路径使用时会在后面串接字符串,取得文件具体路径)。

2.ios版本部署很简单。
在用户名目录下的.bashprofile中直接配置好COCOS2DX_ROOT 以及SDK,NDK路径。然后用bash命令在cocos2d—x的目录下执行安装xcode工程模板的shell脚本。进到xcode中就可以创建Cocos2dx工程了。

还有在ios模板中我看到了一种比较有意思的写法,就是
(1)在AppController中声明了一个AppDelegate的全局变量。
// cocos2d application instance

static AppDelegate s_sharedApplication;
(2)AppDelegate的父类是CCApplication

class AppDelegate : private cocos2d::CCApplication
(3)对于CCApplication,明显是一个单例模式。下面这个方法用来获取单例指针。
CCApplication* CCApplication::sharedApplication()
{
CC_ASSERT(sm_pSharedApplication);
return sm_pSharedApplication;
}
(4)接着看一下CCApplication的构造器

CCApplication::CCApplication()
{
CC_ASSERT(! sm_pSharedApplication);
sm_pSharedApplication = this;

}
这个构造器是将指向自己的指针赋值给自己的一个变量sm_pSharedApplication,而这个变量又在sharedApplication中返回了出来,所以sharedApplication获取的基本上应该就是一个这个类的this指针。
(5)接着看一下CCApplication与AppDelegate的父子关系,AppDelegate的构造器没有任何实现,由于是无参构造器,就会直接去调用其父类CCApplication的构造器,这样一旦
声明了一个AppDelegate的全局静态变量,就会由MAIN函数完成这个变量的初始化,调用它的构造器,进而调用到父类构造器,这样就完成了CCApplication中sm_pSharedApplication的初始化,在调用sharedApplication的时候就能拿到单例对象的指针了。我用的cocos2d-x的版本是cocos2d-2.1beta3-x-2.1.1。不知道后面的版本是不是也一样。只是觉得这样写挺有意思的。
以上只是个人的一点愚见,不知道有没有什么错误,有错的请指出来,好共同学习~