Cocos2d-x 3.x序列帧动画
2016-02-25 14:47
375 查看
Animation : 一个给精灵对象执行的帧动画对象。
Animate:是将动画包装成动作的类。
AnimationCache:管理动画的单例。
1 精灵帧(SpriteFrame)
每一个Animation对象,是由多个SpriteFrame组成。
2 帧间隔时间(delayPerUnit)
动画中的每两帧的间隔时间。
3 播放次数(loops)
添加一个SpriteFrame到动画中
需要先将纹理打包文件.plist,通过SpriteFrameCache加载到缓存,然后获得精灵帧SpriteFrame。
例如:
使用图片名添加一个帧,内部将会创建一个SpriteFrame并添加它。
设置帧间隔时间
设置循环次数
获得一个动画副本
设置是否在动画结束时恢复至初始帧
设置动画对象
获得相反的动作
获得当前的动画对象
从缓存中删除一个动画
获得缓存中的动画
Animate:是将动画包装成动作的类。
AnimationCache:管理动画的单例。
简介
Animation
Animation帧动画对象包含动画帧对象,和帧间时长等等。1 精灵帧(SpriteFrame)
每一个Animation对象,是由多个SpriteFrame组成。
2 帧间隔时间(delayPerUnit)
动画中的每两帧的间隔时间。
3 播放次数(loops)
Animate
但是Animation只是包含了创建真正“动作”的必要信息,要想成为一个动作,需要使用一个Animate来包装一个Animation对象。Animate动作只能由Sprite对象执行。AnimationCache
创建好的Animation,可以加到缓存中,方便以后使用。它用于缓存的动画。如果你想在缓存中保存你的动画,你应该使用这个类。Animation
使用多个精灵帧创建动画createWithSpriteFrames(Vector<SpriteFrame *> frameVec);
添加一个SpriteFrame到动画中
void addSpriteFrame (SpriteFrame *frame);
需要先将纹理打包文件.plist,通过SpriteFrameCache加载到缓存,然后获得精灵帧SpriteFrame。
例如:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("test.plist"); SpriteFrame * frame = SpriteFrameCache::getInstance()->getSpriteFrameByName("test1.png"); Animation * aniMation = Animation::create(); aniMation->addSpriteFrame(frame);
使用图片名添加一个帧,内部将会创建一个SpriteFrame并添加它。
void addSpriteFrameWithFile (const std::string &filename);
设置帧间隔时间
void setDelayPerUnit (float delayPerUnit);
设置循环次数
void setLoops (unsigned int loops);//0表示动画不执行,1表示动画执行一次,-1表示动画循环执行。
获得一个动画副本
Animation * clone ();
设置是否在动画结束时恢复至初始帧
void setRestoreOriginalFrame (bool restoreOriginalFrame);
Animate
使用Animation对象创建动作static Animate * create(Animation *animation);
设置动画对象
void setAnimation(Animation *animation);
获得相反的动作
virtual Animate * reverse();
获得当前的动画对象
Animation * getAnimation();
AnimationCache
通过名字和动画添加到缓存void addAnimation(Animation *animation, const std::string &name);
从缓存中删除一个动画
void removeAnimation(const std::string &name);
获得缓存中的动画
Animation * getAnimation(const std::string &name); //返回一个之前添加的动画。 如果没有找到它将返回空。 如果你要使用它,你应该retain返回的这个拷贝
示例
SpriteFrame * frame = nullptr; Vector<SpriteFrame *> frameVec; for (int i = 1; i < frameNum; i++) { frame = SpriteFrame::create(StringUtils::format("run%d.png", i), Rect(0, 0, 130, 130)); frameVec.pushBack(frame); } Animation * ani = Animation::createWithSpriteFrames(frameVec); ani->setLoops(-1); ani->setDelayPerUnit(0.1f); Animate * ac = Animate::create(ani);
相关文章推荐
- cocos2dx xcode下面编译注意问题
- Cocos 2.2.3 zip文件解压缩
- cocos2d-js销毁计时器
- Cocos2d-x 3.x进度条
- Cocos 2.2.3资源在线下载
- cocos2dx shader分析之CCGLProgram
- Cocos2d-x 3.x图元绘制
- cocos2d-x LUA项目设置记录
- Cocos2d-x 3.x文件操作
- Cocos2D-X2.2.3学习笔记10(几何图形)
- Cocos2D-Android-1之源码详解:2.ActionManagerTest
- cocos2dx 实现不一样的ScrollView
- Cocos2d-x 3.1.1 Lua演示样例 ActionEaseTest(动作)
- 详解iOS游戏开发中Cocos2D的坐标位置关系
- cocos2dx3.0开发,多个类同个头文件,内存泄露
- 返回按键监听-Quick-Cocos2dx
- cocos2d-x3.0 SpriteFrameCache
- cocos2dx-更新-下载--使用日志
- 在cocos2dx中新开一个黑窗口&&lua中的print在win下问题
- Cocos2d-x开发FlappyBird03-GameScene游戏场景初进入