Cocos2d-x
发布时间:2022-05-02 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[Cocos2d-x v3.x]序列帧动画,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
简介
Cocos2d-x中,动画的具体内容是依靠精灵显示出来的,为了显示动态图片,我们需要不停切换精灵显示的内容,通过把静态的精灵变为动画播放器从而实现动画效果。动画由帧组成,每一帧都是一个纹理,我们可以使用一个纹理序列来创建动画。
我们使用Animation类描述一个动画,而精灵显示动画的动作则是一个Animate对象。动画动作Animate是精灵显示动画的动作,它由一个动画对象创建,并由精灵执行。
创建方法
- 手动添加序列帧到Animation类
- 使用文件初始化Animation类
手动添加
手动添加的方法需要将每一帧要显示的精灵有序添加到Animation类中,并设置每帧的播放时间,让动画能够匀速播放。另外,还要通过`setRestoreOriginalFrame`来设置是否在动画播放结束后恢复到第一帧。创建好Animation实例后,需要创建一个Animate实例来播放序列帧动画。
复制代码
- auto animation = Animation::create();
- for( int i=1;i<15;i++)
- {
- char szName[100] = {0};
- sprintf(szName,"Images/grossini_dance_%02d.png",i);
- animation->addSpriteFrameWithFile(szName);
- }
- // should last 2.8 seconds. and there are 14 frames.
- animation->setDelayPerUnit(2.8f / 14.0f);
- animation->setRestoreOriginalFrame(true);
-
- auto action = Animate::create(animation);
- _grossini->runAction(Sequence::create(action,action->reverse(),NULL));
|
在创建Animation实例时会用到以下几个接口:
- `addSpriteFrame`,添加精灵帧到Animation实例
- `setDelayUnits`,设置每一帧持续时间,以秒为单位
- `setRestoreOriginalFrame`,设置是否在动画播放结束后恢复到第一帧
- `clone`,克隆一个该Animation实例
文件添加
首先我们来了解下
需要用到的AnimationCache类。AnimationCache可以加载xml/plist文件,plist文件里保存了组成动画的相关信息,通过该类获取到plist文件里的动画。
在使用AnimationCache类时会用到以下几个接口:
- `addAnimationsWithFile`,添加动画文件到缓存,plist文件
- `getAnimation`,从缓存中获取动画对象
- `ge
Tinstance`,获取动画缓存实例对象
使用文件添加的方法只需将创建好的plist文件添加到动画缓存里面,plist文件里包含了序列帧的相关信息。再用动画缓存初始化Animation实例,用Animate实例来播放序列帧动画。
复制代码