Cocos开发者平台
注册 如果无法登录,请清理浏览器cookie后重新登录。
主题 : cocos2d-x 动画工具 Flash2Cocos2d-x
级别: 侠客
UID: 164207
精华: 1
发帖: 154
可可豆: 250 CB
威望: 246 点
在线时间: 94(时)
注册时间: 2012-09-01
最后登录: 2014-08-21
楼主 : 发表于: 2012-09-09 09:54    发自: Web Page
来源于 程序开发 分类

cocos2d-x 动画工具 Flash2Cocos2d-x   

管理提醒: 本帖被 gagaga 执行加亮操作(2012-09-09)

1.3 版本:http://www.cocoachina.com/bbs/read.php?tid=115744 


最近在研究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



6.jpg(11.2 KB, 下载次数: 0)


5.jpg(269.59 KB, 下载次数: 0)



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:
使用骨架,武器跟随鼠标拖拽转动。



[ 此帖被jjyinkailejj在2012-09-20 22:39重新编辑 ]

关键词: Cocos2d-x 动画 骨骼
级别: 侠客

UID: 7922
精华: 0
发帖: 15
可可豆: 2400 CB
威望: 2400 点
在线时间: 523(时)
注册时间: 2009-08-19
最后登录: 2014-08-02
沙发 : 发表于: 2012-09-09 17:22    发自: Web Page
Good job!!
级别: 金牌会员

UID: 37
精华: 33
发帖: 3200
可可豆: 29742 CB
威望: 29742 点
在线时间: 2629(时)
注册时间: 2008-04-26
最后登录: 2014-07-30
板凳 : 发表于: 2012-09-09 18:34    发自: Web Page
不錯不錯!

碰巧我剛弄了一個 cocos2d-x 的 Spriter 動畫播放器.
级别: 侠客
UID: 164207
精华: 1
发帖: 154
可可豆: 250 CB
威望: 246 点
在线时间: 94(时)
注册时间: 2012-09-01
最后登录: 2014-08-21
3 楼:  发表于: 2012-09-09 18:41    发自: Web Page
回 2楼(dr_watson) 的帖子
是 Brash Monkey 的那个 spriter 吧, 我 用libgdx 引擎那时也用过,那时的版本还不支持 tween效果呢,现在的版本感觉也还是有局限性的。
不开源 而且 正式版本也是收费的 ,使用flash可以加上自己各种想要的效果,现在的版本还有待改善。
级别: 精灵王
UID: 8996
精华: 0
发帖: 785
可可豆: 7239 CB
威望: 7239 点
在线时间: 939(时)
注册时间: 2009-09-22
最后登录: 2014-08-26
4 楼:  发表于: 2012-09-09 22:28    发自: Web Page
lz的文章以前拜读过,非常好,没想到现在也进入移动游戏开发了。 多谢lz的分享与共享精神。
级别: 侠客
UID: 164207
精华: 1
发帖: 154
可可豆: 250 CB
威望: 246 点
在线时间: 94(时)
注册时间: 2012-09-01
最后登录: 2014-08-21
5 楼:  发表于: 2012-09-09 23:49    发自: Web Page
回 4楼(crazymens) 的帖子
以前的?难道是QT,没什么文章的其实
级别: 金牌会员

UID: 37
精华: 33
发帖: 3200
可可豆: 29742 CB
威望: 29742 点
在线时间: 2629(时)
注册时间: 2008-04-26
最后登录: 2014-07-30
6 楼:  发表于: 2012-09-10 09:27    发自: Web Page
回 3楼(jjyinkailejj) 的帖子
是的, 是BRASHMONKEY 那個, 現在的ALPHA 版是免費, 最後版本是要*****的, 但應該也就$10~20.

其實FLASH 不是更貴嗎? 呵呵, 當然, 在國內FLASH 是"免費"的

级别: 侠客
UID: 164207
精华: 1
发帖: 154
可可豆: 250 CB
威望: 246 点
在线时间: 94(时)
注册时间: 2012-09-01
最后登录: 2014-08-21
7 楼:  发表于: 2012-09-10 09:49    发自: Web Page
回 6楼(dr_watson) 的帖子
对哦 ,我只考虑了*****版
级别: 圣骑士
UID: 53328
精华: 2
发帖: 452
可可豆: 3369 CB
威望: 3354 点
在线时间: 363(时)
注册时间: 2011-02-25
最后登录: 2014-08-29
8 楼:  发表于: 2012-09-10 10:00    发自: Web Page
nice work!
哥不说话,哥不想暴露哥那山区的浑厚重低音.
哥不说话,哥用山寨iphone拍下哥凌乱沧凉的白发.
哥不说话,哥轻轻抚摸着额头,怅然的回忆着哥5岁时那破碎的忧伤.
哥不说话,哥只是用完美的角度翘起了嘴角.
级别: 侠客

UID: 27609
精华: 0
发帖: 76
可可豆: 625 CB
威望: 625 点
在线时间: 546(时)
注册时间: 2010-08-14
最后登录: 2014-08-27
9 楼:  发表于: 2012-09-10 10:19    发自: Web Page
不错的工具
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

验证问题:
8*2-5 正确答案:11

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交

    亲爱的会员,CocoaChina服务团队真诚希望得到您的反馈:

    类型:
    内容:
    验证码: 看不清楚
    顶部