***************************************转载请注明出处: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 做动画的更多相关文章

  1. 使用requestAnimationFrame做动画效果二

    3月是个好日子,渐渐地开始忙起来了,我做事还是不够细心,加上感冒,没精神,今天差点又出事了,做过的事情还是要检查一遍才行,哎呀. 使用requestAnimationFrame做动画,我做了很久,终于 ...

  2. 让CALayer的shadowPath跟随bounds一起做动画改变-b

    在iOS开发中,我们经常需要给视图添加阴影效果,最简单的方法就是通过设置CALayer的shadowColor.shadowOpacity.shadowOffset和shadowRadius这几个属性 ...

  3. Android使用XML做动画UI

    在Android应用程序,使用动画效果,能带给用户更好的感觉.做动画可以通过XML或Android代码.本教程中,介绍使用XML来做动画.在这里,介绍基本的动画,如淡入,淡出,旋转等. 效果: htt ...

  4. [UWP]用Shape做动画

    相对于WPF/Silverlight,UWP的动画系统可以说有大幅提高,不过本文无意深入讨论这些动画API,本文将介绍使用Shape做一些进度.等待方面的动画,除此之外也会介绍一些相关技巧. 1. 使 ...

  5. [UWP]用Shape做动画(2):使用与扩展PointAnimation

    上一篇几乎都在说DoubleAnimation的应用,这篇说说PointAnimation. 1. 使用PointAnimation 使用PointAnimation可以让Shape变形,但实际上没看 ...

  6. transition和animation做动画(css动画二)

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! translate:平移:是transform的一个属性: transform:变形:是一个静态属性,可以 ...

  7. 沿着path路径做动画

    沿着path路径做动画 路径 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 16/1/26 ...

  8. animation和transition做动画的区别

    animation做动画,是不需要去触发的,可以定义一开始就执行 transition做动画,是需要人为触发,才能执行的

  9. css3 transform做动画

    css3 transform做动画第一种用关键帧 这里就不说了 就说第二种方法用 transition属性 ps:1jquery anim不支持transform动画 但css还是支. 2 css3关 ...

随机推荐

  1. JVM指令集(指令码、助记符、功能描述)(转)

    JVM指令集(指令码.助记符.功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式:  aconst_null 功能描述:  null进栈. 指令 ...

  2. java获取当前日期时间代码总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值.  方法如下: 要使用 java.util.Date .获取当前时间的代码如下  代码如下 复制代码 Date date = new ...

  3. Resource temporarily unavailable用户的连接数设置的太小

    -bash:fork:Resource temporarily unavailable的问题   出现这个问题的原因是linux用户的连接数设置的太小,只要修改max user processes就可 ...

  4. The mell hall——坑爹

    The mell hall 题目描述 In HUST,there are always manystudents go to the mell hall at the same time as soo ...

  5. wamp在win7下64位系统memcache/memcached安装教程

    折腾了1个多小时,终于搞定.操作系统时64位的,php5.3.13 类似于上一篇的xdebug安装教程~~ memcache和memcached的区别  在自己的新程序中打算全面应用memcached ...

  6. Spring中Quartz动态设置cronExpression

    字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN- ...

  7. UML 之 序列图和协作图

    序列图(Sequence Diagram)     亦称为时序图或循序图,是一种UML行为图.它通过描写叙述对象之间发送消息的时间顺序显示多个对象之间的动态协作.它能够表示用例的行为顺序,当运行一个用 ...

  8. Just4Fun - Comparaison between const and readonly in C#

    /* By Dylan SUN */ Today let us talk about const and readonly. const is considered as compile-time c ...

  9. OCP-1Z0-051-名称解析-文章7称号

    7. Which two  statements are true regarding the USING and ON clauses in table joins? (Choose two.) A ...

  10. Android SVN开发实战的文件夹结构呈现

    svn有一个非常标准的文件夹结构,这是. 例如,该项目是proj.svn地址svn://proj/,然后该标准svn布局是 svn://proj/ | +-trunk +-branches +-tag ...