在C++下使用ccb,绑定调用,成员变量,让人头疼又容易犯错。
自己用pythong写了个小程序,通过ccb文件直接生成C++代码
python我用的不多,又是随性所做,代码质量就很差,大家多多包容吧。
一共包括三个文件,codeGen.py, myCommon.py ,genCpp.py
运行codeGen.py。
myCommon.py中包括一些配置信息,根据具体项目自己修改
class projectinfo: def __init__(self): self.projectName='FishingJoyForCcb' #项目的名称 self.customSubclass={<span style="white-space:pre"> #这个是自己定义的父类,ccb文件中不会有这些信息,只好在这里加上,前key是子类 value是父类 #sample 'Coin':'GameObject' subclassName : superclassName #'Coin':'GameObject' } self.ownerClass={<span style="white-space:pre"> #当成员 和回调方法的为owner类型的时候,可以在这里指定owner class,这样在ccb中定义的方法和成员变量就会在owner class中申明 #sample 'ownerClass': [className1,className2 ....] #'Coin':['Match3Level'] } #self.ccbPath='/Users/dev/cocos2d-x-2.2.3/projects/FishingJoyForCcb/ccb_source' #self.classPath='/Users/dev/cocos2d-x-2.2.3/projects/FishingJoyForCcb/Classes' self.ccbPath='./' #ccb文件的目录 与在命令行路径一样,命令行优先 ,默认为当前目录 self.classPath='./' #cpp 文件的目录 与在命令行路径一样,命令行优先 ,默认为当前目录</span> self.ccbTargetType=['None','RootDocument','Owner'] self.ccbCustomPropertiesType=['int' ,'float','bool' ,'std::string' ] # className : classInfo self.classDictionary={}
命令行
python codeGen.py -c ./ -o ./ Coin Fish
-c,-ccbpath : ccb file path
-o,-outputpath, --generator cpp file path
跟myCommon.py中定义的一个意思
最后可以跟上需要生成类的名称,没有任何类名,就生成ccb目录下的所有类。
成员变量我习惯加m_的前缀,由于程序写的烂,这个地方不太好改,大家凑合吧。
由于我自动给成员变量加了前缀,这样在ccb定义的时候就不用加前缀了,大写开头的变量名就可以了
例如:Type
这样就会生成
int m_Type 的成员变量
和 int getType() 与 void setType(int value)的方法
自动生成代码才项目初期很好用,后期不好维护,使用的时候做好规划。
ccb的扩展属性如果是string类型,我这里好像有些问题,大家使用当心。
通过ccb(CocosBuilder)文件生成cocos2dx代码,布布扣,bubuko.com
通过ccb(CocosBuilder)文件生成cocos2dx代码
原文:http://blog.csdn.net/listlike/article/details/26521075