首页 > 代码库 > 通过ccb(CocosBuilder)文件生成cocos2dx代码

通过ccb(CocosBuilder)文件生成cocos2dx代码

 在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类型,我这里好像有些问题,大家使用当心。

代码下载地址