Cocos2d-x 3.x plist+png 做动画
***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************
前言:
这次的东西,事实上是在做完2048后,我有个Flash想用。
就像,天天系列。开头会有 ”提米“ 的叫声+动画, 是不是感觉非常带感。
之前。做第一个游戏的时候,有做一套78帧的Flash,
可是当时不会用,如今正好拿过来用了。嘿嘿~
正文:
这次样例,就拿我这几天想做的 FlappyBird 的小鸟为例吧:
1.首先,我们先来做须要的资源。
这个有三个层次(眼下我知道的)
① 载入每一个图片
② 把全部图片压缩到一张图片中。然后切割取出。
③借助于plist文件与png共同取出图片。
前两种,比較简单。并且效率不是非常高,我就直接用这三者最好的,plist+png
事实上,plist通常是用在mac上的,
在windows制作plist能够用 TexturePacker,
(能够在这里下载:https://www.codeandweb.com/texturepacker/download )
很方便的一个工具。
安装完成,打开,须要选择你的引擎,当然我们选择的是cocos2d的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHR0cmVl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
打开以后,会出现例如以下界面:
这个工具的使用细节,我不是非常懂= =。
具体的能够问问度娘。
我仅仅知道,点上面那个button,加入,你所须要压缩在PNG里的图片:
这个技巧不须要我多说了吧:
按住Ctrl 能够单个多选,
按住Shift能够连续多选。
选出图片。并把他们增加进来。
假设没有图片,拿以下的凑合一下吧:
然后点击 左上角 的Filebutton:
然后,在下拉的菜单中,选 Public sprite sheet 。然后就选择存放 PNG和PLIST的文件夹:
先是plist文件夹,然后是PNG文件夹。最好两个文件名称是一样的。
接着,就会给你输出出来了:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHR0cmVl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
OK,你就能够到存放的地方看你所生成的两个文件了。
2.接下来就是Cocos2d-x 中调用部分了。
把两个文件(plist和png) 拷贝到Resource 里面。
在VS2012 中 右键点击Resource 目录。加入->现有项,将两者加入进来。
这里。我就直接在HelloWorld界面,放小鸟飞行动画了。
在HelloWorldScene.cpp的Init函数中增加,例如以下代码:
// ①创建缓存,将图片读取进来
CCSpriteFrameCache * cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache -> addSpriteFramesWithFile("hero_bird.plist"); // ②创建第一帧,设置位置,增加到当前场景
CCSprite *sp = CCSprite::createWithSpriteFrameName("bird_hero_01.png");
sp -> setPosition(Point(visibleSize.width/3,visibleSize.height/2));
this -> addChild( sp ); // ③创建集合,存每一张图片
Vector< SpriteFrame* > sfme = Vector< SpriteFrame* >::Vector();
char str[20] = {0};
for( int i = 1 ; i < 4 ; ++i )
{
// ④ 获取图片名字,增加到集合中
sprintf(str,"bird_hero_%02d.png",i);
SpriteFrame *fname = cache -> spriteFrameByName( str );
sfme.pushBack( fname );
}
// ⑤ 创建动画,设置播放速度
CCAnimation *animation = CCAnimation::createWithSpriteFrames( sfme , 0.1f );
sp -> runAction ( CCRepeatForever::create(CCAnimate::create(animation )));
来解释一下:
前面①、② 无需多说,
③,这个曾经用CCArray或者Array,
如今不行了,反正我是3.0和3.2都不能用Array。会在⑤
createWithSpriteFrames出问题,
由于追到这个函数定义。能够发现:
Animation* Animation::createWithSpriteFrames(const Vector<SpriteFrame*>& frames, float delay/* = 0.0f*/, unsigned int loops/* = 1*/)
{
Animation *animation = new Animation();
animation->initWithSpriteFrames(frames, delay, loops);
animation->autorelease(); return animation;
}
它的第一个參数必须为:
const Vector<SpriteFrame*>& frames
这点就要和 之前版本号不同,要注意一下。
然后是 ④
这个获取图片名字。为什么是:
sprintf(str,"bird_hero_%02d.png",i);
呢?
由于%02d,能够保证,取i后,不够的用0补足。
比方,假设是%d,
当i等于1, 获取的名字是: bird_hero_1
而%02d。获取名字是: bird_hero_01
Ok,执行一下,就能够发现小鸟在飞翔啦~
PS:怎样作为一个开场动画呢?
我的方法就是在上述代码后,加一句计划任务。
多长时间后的跳转:
this->scheduleOnce(schedule_selector(InkmooFlash::jumpToMain), 4);
这样,算好播放一帧多久。总共多少帧,就能够做成开场动画啦~。~
***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************
版权声明:本文博主原创文章,博客,未经同意不得转载。
Cocos2d-x 3.x plist+png 做动画的更多相关文章
- 使用requestAnimationFrame做动画效果二
3月是个好日子,渐渐地开始忙起来了,我做事还是不够细心,加上感冒,没精神,今天差点又出事了,做过的事情还是要检查一遍才行,哎呀. 使用requestAnimationFrame做动画,我做了很久,终于 ...
- 让CALayer的shadowPath跟随bounds一起做动画改变-b
在iOS开发中,我们经常需要给视图添加阴影效果,最简单的方法就是通过设置CALayer的shadowColor.shadowOpacity.shadowOffset和shadowRadius这几个属性 ...
- Android使用XML做动画UI
在Android应用程序,使用动画效果,能带给用户更好的感觉.做动画可以通过XML或Android代码.本教程中,介绍使用XML来做动画.在这里,介绍基本的动画,如淡入,淡出,旋转等. 效果: htt ...
- [UWP]用Shape做动画
相对于WPF/Silverlight,UWP的动画系统可以说有大幅提高,不过本文无意深入讨论这些动画API,本文将介绍使用Shape做一些进度.等待方面的动画,除此之外也会介绍一些相关技巧. 1. 使 ...
- [UWP]用Shape做动画(2):使用与扩展PointAnimation
上一篇几乎都在说DoubleAnimation的应用,这篇说说PointAnimation. 1. 使用PointAnimation 使用PointAnimation可以让Shape变形,但实际上没看 ...
- transition和animation做动画(css动画二)
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! translate:平移:是transform的一个属性: transform:变形:是一个静态属性,可以 ...
- 沿着path路径做动画
沿着path路径做动画 路径 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 16/1/26 ...
- animation和transition做动画的区别
animation做动画,是不需要去触发的,可以定义一开始就执行 transition做动画,是需要人为触发,才能执行的
- css3 transform做动画
css3 transform做动画第一种用关键帧 这里就不说了 就说第二种方法用 transition属性 ps:1jquery anim不支持transform动画 但css还是支. 2 css3关 ...
随机推荐
- C++内存管理学习笔记(7)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- emeditor只显示特定类型的文件
emeditor过滤文件类型,右侧资源管理器中只显示特定类型的文件,如只显示java,xml,txt,properties等文件,而不显示doc,jpg,xls等emeditor不能打开的文件. 右击 ...
- Nginx将请求分发到各web应用
介绍了VMWare12虚拟机.Linux(CentOS7)系统安装.部署Nginx1.6.3代理服务做负载均衡.接下来介绍通过Nginx将请求分发到各web应用处理服务. 一.Web应用开发 1.as ...
- Jquery中toggleClass的两种用法
css样式: <style type="text/css"> .bgc{ background-color:#F00; color: #FFF} </style& ...
- CSS之box-sizing的用处简介
前几天才发现有 box-sizing 这么个样式属性.研究了一番感觉非常有意思, 通过指定容器的盒子模型类型,达到不同的展示效果 比如:当一个容器宽度定义为 width:100%; 之后.假设再添加 ...
- 内存泄露检測及cvClone造成的泄露
调了几个小时,到最后发现内存泄露的原因是opencv的cvClone函数,採用cvCopy函数后,问题解决. vs2010使用vld进行内存泄露检測 (1) 下载vld工具 (2) 将D:\Progr ...
- vs2012 它已停止工作 - 解决方案
最近学习<Windows多媒体编程>本课程, 蛋疼, 学校原来是MFC... 然后安装vs2012. 后来又在几个插件.. 在这个问题. 开业,提示 vs2012 它已停止工作. wa ...
- Android 纯代码加入点击效果
项目中非常多的Button, 同一时候配置非常多button切图,Selector是不是非常烦, 使用以下这个类,就能够直接为Button添加点击效果. 不用多个图片,不用Selector. 使用方法 ...
- 企业邮件系统-Postfix安装使用
Postfix是目前流行的一套邮件传输代理软件(MTA),其作者Wietst Venema最初开发这套软件时就对总体设计.扩展能力.可用性及系统安全等方面进行了充分的考虑.由于Postfix在稳定.效 ...
- 深挖BAT内部级别和薪资待遇,你敢看?(转)
一. 阿里内部级别和薪资待遇 先看个例子,或许你也曾像他一样纠结 BAT 的 offer: 最近刚通过阿里面试,但基本薪酬也是不升反小降. 级别只有 P6+,连 P7 都没有,非常郁闷,打算拒绝算了. ...