Cocos Studio 2的动画加载后是ActionTimeline。但问题是:ActionTimeline直接继承自Action,而不是FiniteTimeAction,也就没办法用Sequence来串联几个动作。
我认为这是严重的设计缺陷。ActionTimeline应该继承自FiniteTimeAction,如果需要循环播放就用Repeat来嵌套。
但目前cocos2d-x已经写成这个样子了,请问大家怎么让ActionTimeline和其他动作串联起来?
Cocos Studio 2的动画加载后是ActionTimeline。但问题是:ActionTimeline直接继承自Action,而不是FiniteTimeAction,也就没办法用Sequence来串联几个动作。
我认为这是严重的设计缺陷。ActionTimeline应该继承自FiniteTimeAction,如果需要循环播放就用Repeat来嵌套。
但目前cocos2d-x已经写成这个样子了,请问大家怎么让ActionTimeline和其他动作串联起来?
算是借用Action hack实现的吧。
3.3final起有提供相关的接口知悉动作结束。
哦?我现在用的是3.3rc2,ActionTimeline::setLastFrameCallFunc()倒是可以用来hack下,不过这个接口没有导出到Lua里。马上去下载个3.3final看看。
最近几天许多问题都得到你答复,多谢!
我现在想做的是播放攻击动作,攻击动作结束后结算伤害。攻击动作是一个ActionTimeline。请问在3.3里该怎么实现?
可以用帧事件。final还是没导出到lua吗?
有个更简单的方法,计算出这个timeline的长度,performWithDelay回调一下就可以了,比设置frame event要简单
看了下代码,setFrameEventCallFunc已经导出了,但是setLastFrameCallFunc还没有。我正在用setFrameEventCallFunc来hack这个问题。。
不过,setFrameEventCallFunc的Lua binding,实现上有些问题,会导致内存泄漏。。。clearFrameEventCallFunc会释放c++的function对象,但是引入的Lua function永远不会释放。
具体可参见lua_cocos2dx_ActionTimeline_setFrameEventCallFunc。
delayed callback是不行的。如果动作执行到一半,暂停游戏,时间就不准了。或者,如果动作执行到一半,被取消了,但delayed callback却仍然会执行。
现用frameEvent吧
好高级的样子,我都是直接通过setLastFrameCallFunc获取动画播放结束事件的。。。。
您好!请问内存泄露,具体是怎么个内存泄露,能否帮忙分析一下?或者留个QQ,向您请教一下。谢谢!
我用3.5的版本使用了setFrameEventCallFunc(onFrameEvent),但是都没有进回调函数,这个又是哪门子的坑。。。求解
我也是这个问题 用setLastFrameCallFunc直接报运行库的错
你的意思是说,在quick里面,调用setFrameEventCallFunc函数是会内存泄露的是嘛?