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