cocos2dx 之动画的实现

cocos2dx 之动画的实现,而不是动作。

比如在游戏中我们需要一个人物跑动的效果(不是移动的效果),这时候我们就需要用到动画了,我们通过执行播放一组动作图片,就可以实现动画的效果;

  1. 将动画组打包,通过 TexturePacker 打包图片组成一张图片 ,比如名字就叫 playerRun.png, playerRun.plist
  2. 将文件拖入到项目中,在代码中通过 SpriteFrameCache 加载图片资源,通过SpriteFrame 组成动画的帧具体实现如下:
Animate* T2Animation::createAnimate() {
    SpriteFrameCache *frameCache = SpriteFrameCache::getInstance();
    frameCache->addSpriteFramesWithFile("playerRun.plist", "playerRun.png");

    int iFrameCount = 15;
    SpriteFrame* frame = nullptr;
    Vector<SpriteFrame*>frameVector;
    for (int i = 1; i <= iFrameCount; i ++) {
        frame = frameCache->getSpriteFrameByName(StringUtils::format("playerRun%d.png",i));
        frameVector.pushBack(frame);
    }

    Animation* animation = Animation::createWithSpriteFrames(frameVector);
    animation->setLoops(-1); // 无限循环
    animation->setDelayPerUnit(.1f); // 图片播放间隔

    Animate* animate = Animate::create(animation);

    return animate;
}

  

时间: 2024-10-13 06:21:14

cocos2dx 之动画的实现的相关文章

Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题

最近遇到一个cocos2dx 骨骼动画注册事件播放音效,在骨骼动画播放的时候,按HOME键退到桌面,再次打开游戏的时候,会黑屏. 解决办法如下,可能不是太完美,至少解决了大部分问题. 1.在org.cocos2dx.lib下的 Cocos2dxRenderer.java 中添加native方法 public static native void setIsPause(boolean isPause); 2.在Cocos2dxRenderer.java对应的Java_org_cocos2dx_li

cocos2dx骨骼动画Armature源码分析(三)

代码目录结构 cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下.(mac下没有分,是整个一坨) armature(目录): animation(目录):动画控制相关. CCProcessBase(文件): ProcessBase(类):CCTween和ArmatureAnimation的基类. CCTWeen(文件): Tween(类):控制flash里一个layer的动画. CCArmatur

cocos2dx骨骼动画Armature源码分析(二)

flash中数据与xml中数据关系 上篇博文从总体上介绍了cocos2dx自带的骨骼动画,这篇介绍一下导出的配置数据各个字段的含义(也解释了DragonBone导出的xml数据每个字段的含义). skeleton节点 1 <skeleton name="Dragon" frameRate="24" version="2.2"> name:flash文件名字. frameRate:flash帧率. version:dragonbones

Cocos2dx学习笔记10:cocos2dx序列帧动画(1)

在cocos2dx里是不支持gif动画的,所以我们无法给精灵设置gif格式的图片.但是如果我们想实现动画效果呢?那么我们就要自己通过大量的静态图来组成播放成动画. 在cocos2dx里提供了序列帧动画的概念来实现这个功能,动画由帧组成,每一帧都是一个纹理,我们可以使用一个纹理序列来创建动画. 首先找一张动图的gif图,这里QQ群里最近动图的逗逼图太多,我就随便找了一张,把图片另存到桌面,打开ps软件,把图片拖进去,这样gif图会被拆分许多的图层.我们把图层一个一个图层的保存成png的静态图,命名

将gif图片解析为cocos2d-x帧动画

因为游戏项目需要能够直接播放gif格式的图片,但是cocos2d-x本身并没有提供这方面的功能.在网上查阅发现已经有人给出了一种实现,但是并不能够完全满足我的需求.而且存在一些问题,如不能跨平台,频繁加载时导致内存用尽.后来参考其源码作出了一些修改,使gif图片转换为帧动画方便我使用. 现在已经优化了内存分配问题并且支持跨平台了,支持cocos2d-x3.0以上版本. 下面是使用例子: // 动画定义 GifAnimationDef def; def.loops = -1; // 循环次数 de

cocos2dx Armature动画

#include "cocostudio/CCArmature.h"#include <cocostudio/CocoStudio.h>#include "cocostudio/CCArmatureDataManager.h" ArmatureDataManager::getInstance()->addArmatureFileInfo( "armature/nanyihao/nanyihao.ExportJson" );Arm

cocos2dx lua 动画

--方法1 local spriteFrameCache= cc.SpriteFrameCache:getInstance(); local animationCache= cc.AnimationCache:getInstance(); spriteFrameCache:addSpriteFrames("Effect/loading.plist"); animationCache :addAnimations ("Effect/loading_effect.plist&qu

Cocos2d-x 3.1.1 学习日志14--CocosStudio学习必看

听说Cocos Studio非常久了,主要是由于骨骼动画.眼下看来Cocos2d-x播放动画的方式仅仅有2种: 第一种:是播放序列帧动画,即将动画的每一帧都载入进缓存里,须要播放时再使用Animation类来播放,这样的方法简单暴力.应对一些细节要求低的动画场景的时候.这么干无伤大雅. 可是当动画帧数稍高的时候就会须要大量的图片,消耗资源非常大. 另外一种:是由Cocos2d-x提供的Action类来播放动画,这样的动画是在帧循环中靠调整每次渲染的坐标来打到动画效果.因为帧循环是1/60秒刷新一

Cocos2d-x 3.1.1 学习日志13--CocosStudio学习必看

听说Cocos Studio很久了,主要是因为骨骼动画.目前看来Cocos2d-x播放动画的方式只有2种: 第一种:是播放序列帧动画,即将动画的每一帧都加载进缓存里,需要播放时再使用Animation类来播放,这种方法简单暴力,应对一些细节要求低的动画场景的时候,这么干无伤大雅.但是当动画帧数稍高的时候就会需要大量的图片,消耗资源很大. 第二种:是由Cocos2d-x提供的Action类来播放动画,这种动画是在帧循环中靠调整每次渲染的坐标来打到动画效果,由于帧循环是1/60秒刷新一次,会让这样播