动作
@H_502_8@
@H_502_8@
Cocos2d-x的动作大致分为持续性动作和瞬时性动作。
@H_502_8@
区别也如字面所属,持续性动作可以设置时长,而瞬时性动作将在一帧内完成。
@H_502_8@
同时,上述动作也可以通过并行或序列的方式进行叠加。
@H_502_8@
@H_502_8@
@H_502_8@
如,并行:车轮在自身转动的同时也将向前方移动;串行:物体先进行A动作,再进行B动作,最后进行C动作。
@H_502_8@
在源码实现细节上,Sequence和Spawn组合动作类,并没有采用动态维护一个可变长的动作列表,而是仅定义了m_pOne和m_pTwo两个动作成员变量。其中,m_pTwo代表的是末尾动作,而m_pOne代表的是除末尾动作以外的动作或动作序列。
@H_502_8@
也就是说,cocos2d-x采用的是递归的方式处理动作列表的,例如存在一个动作序列[A,B,C,D]
@H_502_8@
那么[A,D] = [A,C](m_pOne1) + [D](m_pTwo1)
@H_502_8@
= [A,B](m_pOne2) + [C](m_pTwo2) + [D](m_pTwo1)
@H_502_8@
然后再解决[A,B]动作后,再从递归中跳回上一层继续解决C动作...
@H_502_8@