outline-导出节点

导出文件的结构 导出的文件按照先后顺序主要由两部分组成,分别为:

  • 节点信息
    包含导出节点的所有数据。
  • 用户代码
    主要由用户写一些定制的代码,比如为某个节点重写构建函数。导出的文件末尾会有"--outline-custom"标志,在这标志之后添加的代码将被视为用户定制代码,再次导出该文件时定制代码将被保留。
节点信息 【outline-导出节点】节点信息又由多个部分组成,分别为:
  • 节点outline包含了节点的基本数据,如坐标,缩放,颜色等。以及节点额外数据(ExtraData),主要用来描述节点作为控件的数据,来源为creator的自带组件,以及用户自定义组件
  • 节点creator相当于节点的模板,导出的每个节点都对应一个节点creator作为模板,通过它可以构造一个或多个该节点及其子节点。节点creator又包括三个部分,首先是这个节点的节点outline,然后是用户自定义组件,最后是子creator(对应节点的子节点的节点creator)。
  • 关系定义包括为节点creator确定父子关系,也为节点outline确定父子关系。
自定义组件 自定义组件主要通过cocos creator的脚本组件机制实现。
首先在creator中,需要定义一个脚本作为自定义组件的载体,脚本的属性名称需要作特殊标记。
标记分两种:
  • 以"o__"作为前缀的主要用于自定义控件,该属性将会直接导出到节点outline的额外数据中,并且会去掉前缀,如属性"o__pos_0"导出到额外数据中就是"pos_0"。
  • 以"o_"为前缀的,其组件整体会作为一个表导出到节点creator中,并且可通过添加"o_componentName"属性来设置组件名,与前者相似,属性在导出时前缀也会去掉。
建议在编写组件脚本时,通过定义属性的displayName参数来隐藏前缀标记。
基本接口函数 除了button控件,outline所创建的控件均是通过cocos2d-x的api所创建,都遵循cocos2d-x的api。
以下函数中,Creator表示某个节点的creator实例,Creator.Outline表示某个节点creator的节点outline数据。Node表示某个由节点creator创建的节点。
  • Creator:create(Node node,bool withComponents)
    构建这个creator所对应的节点并返回,若给出node实例,则还会把构建好的节点添加到node节点中作为子节点。若withComponents为true,将会把creator中的自定义组件(以"o_"为前缀的)克隆到构建的节点中。
  • Creator:lastNode()
    返回该creator构建的最近的一个节点,若creator还未构建节点,则返回nill。若最近的节点被销毁了,返回的依然是个userdata类型,所以这里要防范野指针。
  • Creator.Outline:reset(Node node,bool cascade)
    套用该outline中节点的基本数据到传入的node上。若传入的cascade为真,将会递归到所有子outline,对它们最近构建的节点进行reset。
  • Node:applyWidget()
    如果cocos creator中的节点包含Widget组件,那么导出的creator创建的节点就会包含applyWidget()方法,可以手动调用它来应用Widget;也可以重写父节点的setContentSize函数来实现动态适应。
利用ExportRule导出节点 参见《outline-组件化cocos2dx的插件》一文

    推荐阅读