来自:cocoachina社区

社区原帖:http://www.cocoachina.com/bbs/read.php?tid=115039

本文由社区会员jjyinkailejj分享

最近在研究cocos2d-x引擎,制作游戏非常重要的一点就是需要一个动画工具,在网上找了一下,发现找到的工具不是很符合自己想象的,要么没有缓动效果, 要么没有骨骼等。

其实在使用libgdx的时候就用到过一款叫做spriter的工具, 网址:http://www.brashmonkey.com/spriter.htm,那时用的版本还不支持tween效果,只能一帧一帧制作,很是麻烦,现在出了新的版本,但是用法还是有些局限性。

后来倒是找到一个flash工具,网址为:http://blog.sina.com.cn/s/blog_570dfe6a01013wua.html

套用作者的话:“为了方便制作独立游戏,便于制作动画,高效灵活的控制游戏动画,写了这个骨骼动画工具。时间轴动画、位图序列动画都耗时耗力,没有美术是做不出来好的效果的。这个工具很轻量,包含一套简易的骨骼引擎以及缓动引擎,做简单的动画完全没有问题。 骨骼动画并没有实现反向动力学,主要是用于给在 FlashCS 里制作的关键帧补间,可以在运行的时候动态的修改控制动画的细节”

这是例子的地址:http://akdcl.sinaapp.com/example.html#e=0

感觉这个工具如果能用在制作游戏应该会十分方便的,在flash制作动画,然后导出数据,在cocos2d-x引擎端读出数据解析动画帧,这样游戏开发能减少很多工作。

flash本身是非常强大的,虽然不可以使用全部的flash的功能,但是用来制作游戏还是完全够了。

有了目标就有了动力,我将flash版的骨骼移植到了cocos2d-x上,github地址:https://github.com/jyinkailej/Flash2Cocos2d-x,里面有源码和例子,基于cocos2d-x 2.0.x版本,有兴趣的同学可以看一下。

上个Flash版本的demo:

使用说明:

Flash:我使用的事 Flash cs 6.0.

1.文件->新建-> actionscript3.0->确定

2.点击矩形工具->在场景中拖出 一个矩形,

3.重复2拖出第二个矩形。

4.分别右键矩形->转换为元件,在库中可以看到元件1 和元件2 再右击新建文件夹“test”,将2个元件拖入新建的文件夹。在场景中用选择工具同时选中两个元件,右键创建元件3,同样拖到这个文件夹中。

4.双击元件3进入到 编辑元件3,把原来的图层删掉,创建3个新图层,分别叫as, t1, t2  。在t1图层拖进元件1,t2图层拖入元件2。左键点击元件1,在属性栏填入t1, 同样操作元件2命名为t2.

5.在as的第一帧右键->动作,填入

var xml:XML=

<test>

<t1/>

<t2/>

</test>

6.编辑时间轴,得到

7.打开Exporttool.fla 将 元件3拖入打开的 Exporttool.fla 场景中

8.控制->测试影片->在Flash professional中(可能不一样)

9.保存骨骼数据,保存贴图数据作为单个文件。(因为原来工具提供的保存贴图数据不支持输出plist,所以另外弄了一个输出单个贴图文件的,输出单个picture后可以用Texture Packer打包成支持Cocos2d的格式)

到此Flash这边的就做完了。目前只支持直接获取老式的补间动画。

其实也可以支持新式的补间动画的,只需要选中新式补间动画,右键->转换为逐帧动画 就可以了,你们也可以试一下。新式的补间动画很好用啊,支持创建运动路线,缓动曲线,嗯,确实可以。

其实原作者提供的例子很详细了,我稍微改了一点工具,大家可以看看http://blog.sina.com.cn/s/blog_570dfe6a01013wua.html

Cocos2d-x:

将Flash2Cocos2d-X 放到Cocos2d-x根目录

example中提供了3个例子。

example1:

// step 1: add your skeleton xml file

CCConnectionData::sharedConnectionData()->addData("ExportTool_skeleton.xml");

// step 2: create a CCSpriteBatchNode

CCSpriteBatchNode *batchNode = CCSpriteBatchNode::create( "knight.png" );

// step 3: create a armature just need armature name, plist, picture, and a CCSpriteBatchNode

armature = CCArmature::create("knight", "knight", "knight.plist", "knight.png", batchNode);

armature->getDisplay()->setPosition(ccp(size.width/2, size.height/2));

armature->getDisplay()->setScale( 1 );

// step 4: play the animation

armature->getAnimation()->playTo("stand", 1, 60, true);

addChild( batchNode );

example2 :

测试大量armature运行的效果,windows中600个 60帧(刚才测600个只有36帧,吓到我了,早上还60帧的呢,原来开了鲁大师,给我降能了)

android中不知道是我机子太水还是没设置对还是就是这样的,才50个60帧左右,求解释。

因为 在 CCBone 和 CCTween中使用了CCArray保存了指针 ,所以 想要释放的话还需要

CCBone::removePoolObject();

CCTween::removePoolObject();

CCConnectionData::sharedConnectionData()->removeAll(); 这个最好在程序结束再释放,因为程序用到的数据基本都是指向这里面的数据

我使用了vld来测试内存泄露所以如果不调用上面的函数 ,程序结束的时候会出现很多内存泄露的信息,例子2中的做法:

AppDelegate::~AppDelegate()

{

SimpleAudioEngine::end();

CCConnectionData::sharedConnectionData()->removeAll();

CCBone::removePoolObject();

CCTween::removePoolObject();

}

example3:

使用骨架,武器跟随鼠标拖拽转动。

cocos2d-x 动画工具 Flash2Cocos2d-x相关推荐

  1. python可视化拖拽平台_【技术解码】不用控制器,只拖拽模型面就可以做动画!很好玩的动画工具...

    文章转自公众号: cg世界 前两天在B站上看到一个有意思的视频,是新一代动画模型绑定控制技术的功能展示,小编看过之后挺好奇,就到网上找了一些相关介绍,想和小伙伴们分享一下. 这款3D动画软件名为Rum ...

  2. 原生JS基于window.scrollTo()封装垂直滚动动画工具函数

    概要: 原生JS基于window.scrollTo()封装垂直滚动动画工具函数,可应用与锚点定位.回到顶部等操作. ####封装原因: 在vue项目中,遇到需要实现垂直滚动效果的需求,初步想到的方法有 ...

  3. 解放生产力,CSS3帧动画工具

    由于CSS效果中用到帧动画时,设计师制作过程中合图过程繁琐,一旦改变动画,需要重新合图: 动画百分比+图片位置计算繁琐,加减动画的帧数需要重新计算: 沟通成本高,有时候设计师发现输出的动画跟在AE看到 ...

  4. 2D骨骼动画工具Sprite Studio使用教程

    骨骼动画在游戏制作过程中必不可少.在建模的基础上,通过动画工具制作角色的一系列动画以备游戏使用. 2D骨骼动画方面国内一直采用Spine 2D制作,对Spine 2D的应用和效果笔者不再赘述,本文为各 ...

  5. After Effects Duik: Rigging Animation Tools After Effects 的绑定与动画工具 Duik插件 Lynda课程中文字幕

    After Effects Duik: Rigging & Animation Tools 中文字幕 After Effects 的绑定与动画工具 Duik插件 中文字幕After Effec ...

  6. Dragonframe定格动画工具

    Dragonframe定格动画工具 Dragonframe是一个定格动画工具,用于制作多部电影,包括迪斯尼的<弗兰肯维尼>.莱卡的<科琳>.<盒子怪>和<诺曼 ...

  7. unity导出fbx模型_Unity批量合并Animation工具/根据已有的Animation文件批量生成带FBX动画工具...

    由于本人现有项目的项目素材大部分都需要继续沿用旧项目的模型与动画,但在接受旧模型动画的时候发现,模型动画由于外包已经丢失了3dmax的源文件,只剩下了一堆AnimationCilp(.anim)文件与 ...

  8. html5 游戏 动画设计,设计师必看的10个HTML5动画工具

    如果你想用令人难以置信的动画创建引人注目的网站的话,那么这里为设计师精心挑选了一些必备的HTML5动画工具.HTML5是设计师用来打造时尚网站的最流行的编程语言之一.在过去三年内,这种编程语言的使用人 ...

  9. 设计师2大必备HTML动画工具

    近三年HTML 5的增长迅猛,已经成为Web开发者当中最流行的语言之一.在本文将为您推荐十个HTML 5动画工具,其中包括Mixeek.Animatron.Tumult Hype.Mugeda等.希望 ...

最新文章

  1. 用javascript实现仿163的js广告向下挤压页面的效果
  2. 【敬初学者】Python基础学完了,该怎么知道自己学的怎么样呢?十个经典实战小项目附源码
  3. C# 垃圾回收机制(转)
  4. async异步注解和aspect切面注解等注解的原理
  5. firefox更新后标签没了_时隔三月,奶酪增强版 Chrome Edge 双双更新
  6. 电商首页设计的时候,就应该考虑这个
  7. 生活中的这些难题,数据库开发者可为你解决!
  8. 利用redis-sentinel+keepalived实现redis高可用
  9. linux的yum命令无法使用在哪里下载_Linux 知识分享:为Linux的cp和mv命令添加进度条...
  10. 坚决反对“企业文学化”
  11. 数据科学导论--2.理论基础
  12. ExtJS中的renderTo何applyTo的差别
  13. 超简单教程——Linux下自制OCR文字识别
  14. java中CheckException和UnCheckException的区别
  15. android如何在登录界面嵌入图片,Android内嵌H5页面调用手机图片操作
  16. 精益生产:现代企业生产管理变革的必然选择(zt)
  17. MEMS硅麦克风芯片行业头部企业市场占有率及排名调研报告
  18. 常用的服务器操作命令
  19. 代码之间为什么要加空格?
  20. 功能齐全的屏幕截图C++实现详解

热门文章

  1. MybatisPlus报错: org.apache.velocity.context.Context(已解决)
  2. 基本结构标签(HTML)
  3. Open3d之对点云进行DBSCAN 聚类
  4. oracle12c视图刷新,Oracle可更新视图
  5. redhat multipath配置文件简要说明
  6. Mysql 时间类型整理
  7. 使用phppgadmin 遇到的小问题
  8. 我的前端笔记之 meta 篇
  9. 前端知识 | React Native手势响应浅析
  10. Linux命令解释之df