***************************************转载请注明出处: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. PHP实现栈(Stack)数据结构

    栈(Stack),是一种特殊的后进先出线性表,其只能在一端进行插入(插入一般称为压栈.进栈或入栈)和删除(删除一般称为弹栈.退栈或出栈)操作,允许进行插入和删除操作的一端称为栈顶,另一端则称为栈底.栈 ...

  2. Top 10 Mistakes Java Developers Make(转)

    文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: ? 1 List<String> list = A ...

  3. C#之再议数组和集合

    1.数组 1.1简单数组 1.2 多维数组 1.3锯齿数组 1.4Array数组 1.5作为参数的数组 1.6枚举 1.7结构 以上部分可参考 http://www.cnblogs.com/ztb12 ...

  4. ASP.NET 成员资格 Part.2(使用安全控件 Login)

    原文:ASP.NET 成员资格 Part.2(使用安全控件 Login)        准备好提供程序以及用户信息的存储,就可以开始构建验证用户.注册用户或者让用户能够重置密码的用户界面了.ASP.N ...

  5. java注解(一)

    虽然平时有使用注解,不过没有深入了解,今天无聊,重新从基础深入了解整理下: java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.     注解不会也 ...

  6. Storm具体解释一、Storm 概述

    一.Storm概述      Storm是一个分布式的.可靠的.零失误的流式数据处理系统. 它的工作就是委派各种组件分别独立的处理一些简单任务.在Storm集群中处理输入流的是Spout组件,而Spo ...

  7. 修改linux系统时间、rtc时间以及时间同步

    修改linux的系统时间用date -s [MMDDhhmm[[CC]YY][.ss]] 但是系统重启就会从新和硬件时钟同步. 要想永久修改系统时间,就需要如下命令:hwclock hwclock - ...

  8. 分解XML方法

    分解XML方法 1.DOM生成和解析XML 2.SAX生成和解析XML 3.DOM4J生成和解析XML 4.JDOM生成和解析XML 版权声明:本文博主原创文章.博客,未经同意不得转载.

  9. 算法战斗:给定一个号码与通配符问号W,问号代表一个随机数字。 给定的整数,得到X,和W它具有相同的长度。 问:多少整数协议W的形式和的比率X大?

    如果说: 给定一个号码与通配符问号W,问号代表一个随机数字. 给定的整数,得到X,和W它具有相同的长度. 问:多少整数协议W的形式和的比率X大? 进格公式 数据的多组,两排各数据的,W,第二行是X.它 ...

  10. 【SICP归纳】2 高阶函数和数据抽象

    上一篇博文相应的是书中的第一章的一二两节,我们已经大致的有了一种构造的感觉不是么. 书中展示了非常多有趣的句法(syntax). 如今我们要让思想进一步的抽象.写这篇博客的时候并未学完整本书.更不敢说 ...