1CocoStudio 简介

CocoStudio 是由 Cocos2d-x 官方推出的一个专门针对 Cocos2d-x 游戏开发的免费工具集,目前正在开发阶段,且日益完善之中!既是工具集,当然集成了现有各零零散散工具的功能,并且不断扩充,包含动画编辑器,UI编辑 器,场景编辑器和数据编辑器。具体内容及其特性欢迎访问 CocoStudio 官网 http://cocostudio.org/ 。在这里,我们通过动画编辑器来快速体验一下 CocoStudio 为我们开发带来的便捷~

2环境搭建与配置

本文章所使用的系统环境为 win7 系统,CocoStudio-0.2.0 版本。

在当前最新稳定版 Cocos2d-x-2.1.4 的 TestCpp 中已经有例子展示了一些相关骨骼动画的效果。

3序列帧动画的创建步骤

帧动画,顾名思义!就是将一张张设计好的图片,依次展示出来,就像放胶片电影一样,多帧组成动画效果。不多介绍了,直接看 CocoStudio 的使用方法。

a.打开 CocoStudio 启动动画编辑器

b.点击文件新建项目,并确定

c.在资源窗口选择添加资源,序列帧原图(这里不支持使用plist作为资源,但可以导出plist)

d.选择第一帧图片,拖进“渲染窗口”,选择工具栏第三项,居中显示。(居中可选操作)

e.我们看见在“对象结构”视图中多出一个层,这就是序列帧动画层,在资源视图多选文件(除首帧之外),

之后拖动到“对象结构”视图中刚才那个层之上,(这句话最重要,不过貌似读者晕了,回头看我视频吧)

我们将能够看见“关键帧”视图的变化,当前帧根据图片数量自动变化,注意“对象结构”视图中鼠标的位置。

f.点击“关键帧”视图“播放”即可播放,也可循环播放动画

g.保存项目后,可以导出大图,自动打包资源图片,在本例中生成了 “CsAnim.ExportJson”,”CsAnim0.plist” 和 “CsAnim0.png” 三个文件,然后我们就能拿着这三个文件在 Cocos2d-x 中使用了。

4.如何在 Cocos2d-x 中运行其动画

上面我们生成了一些文件,动画的资源文件,此时我们需要在 Cocos2d-x 中加载这些资源,并运行之,我们将以上文件放在项目 “Resources” 的 “Export” 目录之中。 然后使用如下关键代码,创建动画。

// 加载资源文件 png 图片,plist 文件和 ExportJson 动画文件,一般而言可以在场景运行之初加载此资源

cs::ArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("Export/CsAnim0.png", "Export/CsAnim0.plist", "Export/CsAnim.ExportJson");

// 这里直接使用 CsAnim ,而此信息保存在 CsAnim.ExportJson 中,与其创建的项目属性相对应

cs::Armature* armature = cs::Armature::create("CsAnim");

// 设置当前运行动画的索引,一个“工程”可以建立多个动画

armature->getAnimation()->playByIndex(0);

// 设置位置信息

armature->setPosition(VisibleRect::center());

// 添加到容器,当前运行的场景之中

addChild(armature);

创建骨骼动画

首 先,打开Cocos Studio 的 Animation Editor(动画编辑器),新建一个动画工程。 同Spine一样,Cocos Studio动画编辑器也有两种模式,但这里是形体模式和动画模式。用户需要在形体模式下组装角色部件,并为其绑定骨骼;并在动画模式下调整骨骼相应属性 生成骨骼动画。

下面我们先来对编辑器整体做一个认识,见下图。

形体模式下:

 动画模式下:

上面两图中,标记为1的部分是渲染区域,也就是我们的画布,它是资源布局的主编辑区,在该区域可以对各对象进行移动,缩放,旋转的操作,所有主要的操作结果都会在这个区域中显示完成。

第2部分是快捷菜单栏,该窗口中有一些常用操作,其中包括模式的切换,创建骨骼,缩放,旋转等等一系列操作。

第3部分是资源栏,本项目中使用的所有资源都必须导入到该面板才可以使用。

第4部分是预览区域,当选中资源栏的资源时,会在该区域中显示,达到预览的作用。

第5部分是对象结构栏,编辑器将根据对象结构栏中对象的顺序依次渲染对象,在最下层的对象将先于渲染,也就是说它可能会被后渲染的对象遮盖。另外,对象的顺序在该栏中是可调的。

第6部分是属性栏,当选中一个对象时,属性窗口会显示出该对象的所有属性。修改任意属性都可以立即改变该节点在渲染区域的状态。

第7部分是动作列表栏,一个动画工程是允许有多个动作的,比如:行走、跳跃、奔跑等等。所以在该栏中用户可以创建多个动作,并在多个动作中切换。

第8部分是动画帧面板,该面板将显示画布中所有对象的序列帧,用户可通过添加帧和改变对象属性创建动画序列帧。

对编辑器有了大致的了解后,现在就可以开始编辑动画了。

1.在形体模式下,选择 文件->导入资源 或在资源栏中右键选择需要导入的资源文件,也可直接将资源拷入工程的Resources文件夹目录下,然后刷新资源面板。

2.将资源拖到渲染区,并摆好位置。

3.开始创建骨骼:选中快捷菜单栏中创建骨骼的按钮,在角色身体的各部位单击左键并拖动鼠标画出骨骼。

4.将资源素材与骨骼绑定,右击渲染区的资源素材,选择“绑定到骨骼”,然后选择骨骼(选择的骨骼会高亮显示),就可以实现骨骼的绑定。

5.当绑定好所有素材和骨骼后,右击骨骼选择“绑定父关系”,再选择该骨骼的父骨骼(选择的骨骼同样会高亮显示),这样依次根据身体部位的“父子”层级关系设定好。

6.切换到动画模式,选中相应控件,移动鼠标到动画帧一栏的某帧处,然后,改变被选择控件的某个属性,如旋转它,这样就能实现流畅的补间动画。

7. 导出项目为程序可用的资源:导出的资源在工程目录的Export/..文件夹下,一共有三个资源文件,分别是 .ExportJson,.plist 和 .png文件。ExportJson文件中记录了骨骼动画的描述信息,plist文件则是记录碎图整合成大图后图片的位置描述信息,png文件是整合的大 图。

在 Cocos2d-x 中加载动画资源

前面我们花了很多精力来创建骨骼动画,然而要将它运行在实际的项目中却非常的简单,只需几行代码,当然在这之前我们需要将动画编辑器导出的资源复制到项目Resource目录中去。

同样地,在Cocos2d-x程序中使用Cocos Studio动画首先需要包含相关头文件,如下:

#include
"cocostudio/CocoStudio.h"

usingnamespacecocostudio;

创 建一个骨骼动画对象,需要将动画文件和资源文件载入到程序。这里我们通过ArmatureManager动画数据管理器来加载动画。 ArmatureManager本身是一个单例,它管理整个场景中的Armature。而Armature则封装了我们播放动画需要的 Animation。由此可见,这是一个三层缔结的层次结构。其中ArmatureManager最大,然后是Armature,最后是 Animation。

说完了原理,下面来看看代码。修改init函数, 在return前加入如下代码:

ArmatureDataManager::getInstance()->addArmatureFileInfo("NewAnimation0.png","NewAnimation0.plist","NewAnimation.ExportJson");

Armature
*armature = Armature::create("NewAnimation");

armature->setPosition(Point(visibleSize.width
* 0.5, visibleSize.height * 0.5));

//
播放动画

armature->getAnimation()->play("walk");

this->addChild(armature);

效果图:

我们在动画编辑器中编辑的动作就是Animation,一个动画工程中可以编辑多个动作,也就是动作列表中可创建多个动作。如下图所示:

所以播放动画需要根据具体地需要来播放,这样才能知道用户要播放的动画是哪一个。可以像上面代码一样指定动画名来播放动画,也可以通过指定动作编号来播放动画,如下:

armature->getAnimation()->playWithIndex(0);

播放连续地动画可通过以下函数实现:

voidplayWithNames(conststd::vector<std::string>&
movementNames,intdurationTo
= -1,boolloop
=true);

voidplayWithIndexes(conststd::vector<int>&
movementIndexes,intdurationTo
= -1,boolloop
=true);

转载于:https://www.cnblogs.com/dudu580231/p/4983670.html

实习小白::(转) cocos2d-x使用cocosStudio编辑的动画文件相关推荐

  1. c语言 乱码转化为16进制_面向小白的C语言科普教程(一)文件和扩展名、编码和十六进制...

    前言 本系列文章偏向科普向,出发点是因为某乎每天都给我推送有关C语言基础的低质问题,答得多了发现不仅收不到赞,甚至会因为太弱智而掉粉.所以萌生了尝试给有想要了解.学习C语言及相关计算机知识的同学复制一 ...

  2. php如何实现区分编辑,php实现编辑和保存文件的方法

    php实现编辑和保存文件的方法 发布于 2015-09-26 11:54:35 | 66 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Prep ...

  3. VI打开和编辑多个文件的命令

    VI打开和编辑多个文件的命令 可分两种情况: 1.在同一窗口中打开多个文件: vi file1 file2 file3 :n  切换到下一个文件 (n=next) :N  切换到上一个文件 2.在不同 ...

  4. Vim - 编辑多个文件

    Vim 编辑多个文件 在上一篇的文章中,我们介绍了在 Vim 中窗口分割同一文件,今天学习一下 Vim 编辑多个文件. 语法 : vim <file1> <file2> - 其 ...

  5. php保存设置,php如何实现编辑和保存文件?

    php如何实现编辑和保存文件? 本文实例讲述了php实现编辑和保存文件的方法.分享给大家供大家参考.具体如下: save_file.php: session_start(); $handle = fo ...

  6. secure使用vi编辑远程机器文件出现4;m

    secure使用vi编辑远程机器文件出现4;m 这个是因为远程机器没有安装vim 安装vim后就可以正常使用securecrt正常编辑远程机器上的文件了.

  7. 如何编辑ttf字体文件

    libfreetype的目标是以最小的内存最快的速度,读取和渲染字体.因此libfreetype并不适宜用来编辑ttf字体文件. 编辑字体文件,可以用FontCreator.微软fonttools.f ...

  8. 将windows下编辑好的文件(GBK)转换成Linux下的格式(UTF8)

    背景:一般我们在windows上编辑好的文件默认编码是GBK,而且换行符是^M,为了将这些文件用在linux上,我们一般会将它们转换成Linux下的文件格式,即去掉^M,且将文件格式转换成UTF8. ...

  9. 在 Sublime Text 中使用 SFTP 插件快速编辑远程服务器文件 Sublime-text with SFTP plugin ...

    Sublime Text 2 本身并不强大,但是它方便使用插件扩展功能,所以变得很强大.今天介绍一个很实用的插件 SFTP ,可以大大提高前端工作效率. 常见的工作流程 有时候修改一些网站上的文件,通 ...

最新文章

  1. Docker入门六部曲——基本引导
  2. php在用js_encode()转换时,实现斜杠不转义
  3. 【Android 安全】DEX 加密 ( 阶段总结 | 主应用 | 代理 Application | Java 工具 | 代码示例 ) ★
  4. 【知识星球】剪枝量化初完结,蒸馏学习又上线
  5. 为什么VS(visual studio)中会建议宏 #define 转换为constexpr?
  6. boost::mp11::mp_transform_front相关用法的测试程序
  7. (转)基于svnserve的服务器,权限文件authz配置的常见问题及解答
  8. java生成html表格数据_使用Java将表格数据导出成Excel格式
  9. 在安全模式下激活xp
  10. UI素材干货模板|网页“按钮”组件,教你要如何设计!
  11. python交互式怎么保存_如何保存Python交互式会话?
  12. ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][3/3]
  13. 计算机管理-共享打印,打印机局域网共享怎么设置?最简单稳定的方法:一键共享...
  14. 艾伦·凯(Alan Kay)的深刻见解
  15. iOS country code及国际区号
  16. javascript设置颜色值的几种方法
  17. Java毕业设计项目【畅购商城】
  18. 【工具-AWVS】AWVS安装与使用
  19. jsPlumb 学习笔记
  20. There were errors checking the update sites: SSLHandshakeException: sun.secu 202007亲测有用

热门文章

  1. mysql导入 内存溢出_Solr Dataimporthandler 导入MySQL 内存溢出。
  2. php目录隔离,PHP 应用隔离的几种方法
  3. mysql存储过程实例实现查询_Mybatis应用mysql存储过程查询数据实例
  4. v8的垃圾回收机制(一)
  5. wrapper php,PHP流Streams、包装器wrapper概念与用法实例详解
  6. java 组合 遍历 算法_java编程n个集合每次从每个集合里面取出一个元素组成一个字符串列出所有组合算法...
  7. 三星笔记本电脑怎么恢复出厂设置_Mac OS如何恢复出厂设置?安装Mac OS系统教程...
  8. 修改java或css后不生效,还是显示修改之前的样式,问题已解决
  9. mui php上传图片,mui ajax图片上传
  10. mysql merge事务_mysql菜鸟手迹11--mysql存储引擎之Merge