Cocos2d-x笔记记忆整理Day3

动作
Cocos2d-x的动作大致分为持续性动作和瞬时性动作。
区别也如字面所属,持续性动作可以设置时长,而瞬时性动作将在一帧内完成。
同时,上述动作也可以通过并行或序列的方式进行叠加。

如,并行:车轮在自身转动的同时也将向前方移动;串行:物体先进行A动作,再进行B动作,最后进行C动作。

在源码实现细节上,Sequence和Spawn组合动作类,并没有采用动态维护一个可变长的动作列表,而是仅定义了m_pOne和m_pTwo两个动作成员变量。其中,m_pTwo代表的是末尾动作,而m_pOne代表的是除末尾动作以外的动作或动作序列。
也就是说,cocos2d-x采用的是递归的方式处理动作列表的,例如存在一个动作序列[A, B, C, D]
那么[A, B, C, D] = [A, B, C](m_pOne1) + [D](m_pTwo1)
                 = [A, B](m_pOne2) + [C](m_pTwo2) + [D](m_pTwo1)
然后再解决[A, B]动作后,再从递归中跳回上一层继续解决C动作...
采用递归的这种方式,而非使用容器,减少了维护的复杂性,同时虽然牺牲了一部分效率,但可以换来代码的简洁,所有的动作组合只需要考虑两个动作的组合即可。

一个栗子:
当一艘船从A驶向B的过程中,若仅让船体以贝塞尔曲线的形式运动,而不时刻调整船头方向明显是不合理的。
在编程中,一个简单而行之有效的办法是通过微分法,以极短的时间内的位移,计算出tan值,再通过arc(tan)算出转动角度,从而模拟船沿运动轨迹的切线运动。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值