cocosbuilder 使用的那些事[不断完善中]

1.命名及使用

1.1 命名

 CCB中的变量命名就不用'_'下划线开头了,以免和代码中的私有变量冲突。命名均以小驼峰风格写,命名要求有意义,不是常用词尽量不要简写。
 
 对象命名:
         对象命名后面带上对象类型,比如顶部整体Node:topNode,tableView预留位置的Node:tableViewNode,返回大厅动
         画:backToHallAction
 
 回调命名:
         动画回调命名最后以*CallBack 结尾或者简写CB。
         按钮回调以onClickAAAABBBB开头。
 
 作用+标示后缀
 作用:用有意义的名字,驼峰方式命名,英文命名。   
 
  控件           简称    备注                                     例子    
  Controlbutton--CBtn   (CCMenu不用)                             backToHallCBtn
  Sprite         Spr                                             hallBgSpr,headSpr
  9Sprite        9Spr                                            panelBg9Spr
  Node           Node  (不用Layer,如果真用Layer就是单一CCB)     topNode,bottomNode,hallDizhuBtnNode
  Scroll         Scroll                                          friendRankScroll
  labelTTF       TTF                                             userNameTTF
  labelBMFont    BMF                                             userCoinsBMF
      

1.2 对象使用

使用CCB里面的对象的时候直接用controller['对象名']的形式,比如初始化大厅中玩家姓名

     hallController['userNameTTF'].setString("测试");

不需要写成

     var userName = hallController['userNameTTF'];
     userName.setString("测试");

2.设计

2.1 拆分CCB

拆分CCB,总共分为3种拆分:功能模块拆分、动画拆分、层(场景)拆分

功能模块拆分:

 
    除了一级大厅和桌面大功能模块尽量按每个模块一个CCB进行拆分,最好每个功能模块控制在一张1024的png大图以内。大图控制在功能级
 在一个CCB种饮用资源控制在本功能模块plist,common,hall最多3个地方,比如设置面板,setting.plist,common.plist。引用的图如果
 其他功能模块也存在,那么就放在公共图中。
 

动画拆分:

 
    只要是无限循环的动画CCB就独立出来。序列帧动画独立出来。关于大图部分,几个共属于同一个功能模块或者同一个场景的放在一个大
  图中。
  

层(场景)拆分:

  
  有时候一个场景会分多个部分,比如页签形式的,那么没页签内的不同部分就可以独立出来单做CCB。    
  

2.2 拆分Node

Node主要有两个作用:结构划分,整体操作。

结构划分:

 
 比如大厅可以从结构上分为上、中、下 ,那么再CCB中就可以用Node将整体分为topNode、bodyNode、bottomNode三部分,比如bottomNode
 中用户信息部分由,头像,头像按钮,头像边框,姓名板等多个部分组成,就可以放在一个userNode中挂在bottomNode节点下面。这样做的
 目的是便于后期维护和管理。比如我想修改头像部分一看屏幕展现形式很容易打开bottomNode在看userNode快速定位。

整体操作:

 当需要作为整体做操作的时候也需要套一个Node,比如:一个复杂的按钮,里面有无限播放的动画,有背景,有触摸操作,就可以将这个复杂
 的按钮放在一个Node里面,通过ControlButton或者自定义按钮接受点击事件,完成整体按钮处理以及反应动画等。
 

2.3 Node嵌套

 
 至少涉及为代码加入对象站位置、预留空间、代替代码加入对象做动画等都需要。代码中不要有绝对坐标和内容大小设置,尤其tableView大
 小宽度根据cell变化,高度通过计算得到。当需要涉及坐标变化的时候用CCB已有对象为参考,计算相对位置。
 
 注意:不要用CCSprite相互套用。 灵活运用Node,而不滥用,必要的时候才用,用好了Node,包括内容大小、坐标、锚点、动画。灵活运用
 会很方便的解决很多复杂问题,使结构逻辑清晰化。

2.4 坐标

 CCB中所有的坐标,都必须是%的形式,没有例外,整个CCB从父到子所有节点都是。
 
 相对坐标,一定要清楚,是相对于哪个父节点的坐标,随着父节点的内容大小变化,可能出现的变化设计的时候要清楚。
 
 小技巧,有的时候相对坐标需要配合锚点,比如左上角的返回按钮,我们希望随着屏幕变化始终相对于左边变化,那么就将返回按钮的锚点设
 置为(0,0.5)。

2.5 锚点

 任何时候都不要忽略锚点,即使你要设置锚点为左下角,也不要忽略。
 如果不是很有必要请保持锚点在正中间。

3.动画

3.1 动画拆分

动画拆分:有序动画、无序动画、无限循环动画、动画嵌入动画。

有序动画:

  
  有序动画里面的每个动作的执行顺序固定,比如大厅动画,进入大厅先上下部分动,再中间,每次都是。如此我可以将不同顺序的动画拆
  分。比如我可以将上下部分的动画保存为:enterHallTBAction,中间保存为enterHallBodyAction.然后在enterHallTBAction的动画编
  辑区的最下面No chained Timeline,处选择enterHallBodyAction.
  
  这样做便于部分修改,播放的时候只需要执行enterHallTBAction就可以得到完整动画。如果修改中间或者上下部分动画,单独修改互不影
  响。  
  

无序动画:

  
  无序动画的每个动作执行顺序不一定,那么就需要拆分成多个timeline来进行,比如结果框动画,多个表现,需要在不同条件下组合出发。
  多个动画组合可以通过代码控制,也可以在动画上callback区域插入回调帧,在回调中根据条件灵活处理。动画回调不要和游戏逻辑紧密配
  合,只限于做动画链接。
  

无限循环动画:

  
  无限循环动画,每个无限循环部分单独CCB处理,选择AutoPlay方式,加入即自动播放,或者取消AutoPlay自己控制。
  

动画嵌入动画:

  动画嵌入动画,子动画需要用Node站位置,在代码中将子动画CCB加入到其中即可。

3.2 动画组合

4.适配

 
 适配这块有时候很噁心,关键记住相对哪个父节点,如果父节点大小会变化,那么子节点怎么动。这弄清楚即可。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...