ActionTimeline播放动画,怎么让一次性动作和其他动作连起来?

Cocos2d-x 3.3

动作动画都是用Cocos Studio编辑成timeline的。人物攻击一次,然后移动。我希望先把攻击动作播放一次,然后循环播放移动动作。问题是:怎么获知攻击动作结束?

我能找到的方法有:

  1. 调用ActionTimeline:isPlaying(),轮询状态。但这种方式效率不行
  2. 通过ActionTimeline::setLastFrameCallFunc()设置一个回调,当播放到最后一帧时会被调用。不过这个方法在Lua里不可用

请问大家是如何解决这个问题的?

自己顶下。。

把攻击动作和移动动作关联起来

1)CCSpawn:使用该组合动作可以让节点同时执行多个动作。
2)CCSequence:使用该组合动作可以按顺序执行多个动作。
3)CCRepeat:使用该组合动作让节点在限定的时间内重复执行某个动作。
4)CCRepeatForect:使用该组合动作让节点反复执行某个动作。CCSequede中不能包含此动作

CCAction *action = ,nil];
这是object-c语句 我就不翻译了

Sequence,Repeat等,都只能用于FiniteTimeAction。但是,ActionTimeline直接继承自Action,不能用Sequence或Repeat的。

感觉这是严重的设计缺陷。

请问楼主这个问题解决了吗?

http://www.cocoachina.com/bbs/read.php?tid=274237我觉得这个帖子可以解决这个问题,用setFrameEventCallFunc监听帧事件

是的。后来的确是用frame event解决的。

有一个帧事件啊