actiontimeline原理播放动画,怎么让一次性动作和其他动作连起来

用Cocos Studio 2生成的timeline动画,怎么知道动画结束_百度知道Pages: 1/2
主题 : 用Cocos Studio 2生成的timeline动画,怎么知道动画结束?
级别: 新手上路
可可豆: 135 CB
威望: 135 点
在线时间: 64(时)
发自: Web Page
用Cocos Studio 2生成的timeline动画,怎么知道动画结束?&&&
Cocos Studio 2的动画加载后是ActionTimeline。但问题是:ActionTimeline直接继承自Action,而不是FiniteTimeAction,也就没办法用Sequence来串联几个动作。我认为这是严重的设计缺陷。ActionTimeline应该继承自FiniteTimeAction,如果需要循环播放就用Repeat来嵌套。但目前cocos2d-x已经写成这个样子了,请问大家怎么让ActionTimeline和其他动作串联起来?
级别: 精灵王
UID: 387086
发帖: 1493
可可豆: 1897 CB
威望: 1886 点
在线时间: 1069(时)
发自: Web Page
回 楼主(starfar) 的帖子
算是借用Action hack实现的吧。3.3final起有提供相关的接口知悉动作结束。
级别: 新手上路
可可豆: 135 CB
威望: 135 点
在线时间: 64(时)
发自: Web Page
回 1楼(东扬冬阳) 的帖子
哦?我现在用的是3.3rc2,ActionTimeline::setLastFrameCallFunc()倒是可以用来hack下,不过这个接口没有导出到Lua里。马上去下载个3.3final看看。最近几天许多问题都得到你答复,多谢!
级别: 新手上路
可可豆: 135 CB
威望: 135 点
在线时间: 64(时)
发自: Web Page
回 1楼(东扬冬阳) 的帖子
我现在想做的是播放攻击动作,攻击动作结束后结算伤害。攻击动作是一个ActionTimeline。请问在3.3里该怎么实现?
级别: 精灵王
UID: 387086
发帖: 1493
可可豆: 1897 CB
威望: 1886 点
在线时间: 1069(时)
发自: Web Page
回 3楼(starfar) 的帖子
可以用帧事件。final还是没导出到lua吗?
级别: 新手上路
可可豆: 149 CB
威望: 149 点
在线时间: 99(时)
发自: Web Page
有个更简单的方法,计算出这个timeline的长度,performWithDelay回调一下就可以了,比设置frame event要简单
级别: 新手上路
可可豆: 135 CB
威望: 135 点
在线时间: 64(时)
发自: Web Page
回 4楼(东扬冬阳) 的帖子
看了下代码,setFrameEventCallFunc已经导出了,但是setLastFrameCallFunc还没有。我正在用setFrameEventCallFunc来hack这个问题。。不过,setFrameEventCallFunc的Lua binding,实现上有些问题,会导致内存泄漏。。。clearFrameEventCallFunc会释放c++的function对象,但是引入的Lua function永远不会释放。具体可参见lua_cocos2dx_ActionTimeline_setFrameEventCallFunc。
级别: 新手上路
可可豆: 135 CB
威望: 135 点
在线时间: 64(时)
发自: Web Page
回 5楼(kennir) 的帖子
delayed callback是不行的。如果动作执行到一半,暂停游戏,时间就不准了。或者,如果动作执行到一半,被取消了,但delayed callback却仍然会执行。
级别: 精灵王
UID: 387086
发帖: 1493
可可豆: 1897 CB
威望: 1886 点
在线时间: 1069(时)
发自: Web Page
回 7楼(starfar) 的帖子
现用frameEvent吧
级别: 骑士
可可豆: 499 CB
威望: 467 点
在线时间: 155(时)
发自: Web Page
好高级的样子,我都是直接通过setLastFrameCallFunc获取动画播放结束事件的。。。。
EasyBox2D For Creator : http://jeason1997.github.io/EasyBox2D
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
论坛技术问题应该发布到? 正确答案:CocoaChina问答
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版相关软件 /中文/ /中文/ /中文/ /中文/ /中文/ /繁体/ /中文/ /中文/ /中文/ /中文/顶好评:50%踩坏评:50请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
30.4M/中文/7.1
157KB/多国语言[中文]/6.9
1.6M/英文/1.6
4.1M/中文/6.4
4.6M/中文/8.5
20.1M/中文/4.2
Action Essentials 2的中文名称是动作影视精华特效素材,想必很多人都听过,Action Essentials 2是一个制作特效时所使用的动作素材的集合。为视频特效以及动画而生。CGYOU几年前VC的第一部素材集出售就是这个系列的第一部,同样也是VC奠定基础的第一部,相隔几年之后,VC再度出品这个系列的第二部也让人有了很多的期待。素材简介:• 20 种特效种类&# 个已预键控的高清素材• 提供两种尺寸版本: 2K 和 720p• 60 分钟的
教程• 20 段额外附赠的声效素材• 详尽的特效缩略图• 真实录制的素材超过90%兼容软件版本:After Effects 6.5, 7, CS3 & CS4 & CS5 & CS6 & CCFinal Cut Studio & Premiere Elements VideoAvid其他基于的软件此版本为2K版本分辨率为2048 x 1152 总大小30G左右
动作影视精华特效素材(Action Essentials 2) 全套
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。cocos2dx-lua(19)
Cocos Studio编辑器编辑的动画,均是通过CCActionTimeline来执行。CCActionTimeline主要包含如下函数:
virtual void play(std::string animationName, bool loop);
virtual void gotoFrameAndPlay(int startIndex);
virtual void gotoFrameAndPlay(int startIndex, bool loop);
virtual void gotoFrameAndPlay(int startIndex, int endIndex, bool loop);
virtual void gotoFrameAndPlay(int startIndex, int endIndex, int currentFrameIndex, bool loop);
virtual int getStartFrame() const { return _startF }
virtual int
getEndFrame() const { return _endF }
virtual void gotoFrameAndPause(int startIndex);
virtual void
setTimeSpeed(float speed) { _timeSpeed = }
void setFrameEventCallFunc(std::function&void(Frame *)& listener);
如何知道一个UI动画的时长呢?可以添加一个函数来计算
float ActionTimeline::getAnimationTime(const char* animationName) const
const auto it = _animationInfos.find(animationName);
if (it == _animationInfos.end())
const AnimationInfo& index = it-&
int endIndex = index.endI
return (endIndex - index.startIndex) * _frameI
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4566次
排名:千里之外
原创:32篇
转载:10篇
(1)(2)(3)(6)(1)(1)(4)(9)(18)(1)扫一扫关注官方微信}

我要回帖

更多关于 一次性删除ppt动画 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信