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的:
打开以后,会出现例如以下界面:
这个工具的使用细节,我不是非常懂= =。
具体的能够问问度娘。
我仅仅知道,点上面那个button,加入,你所须要压缩在PNG里的图片:
这个技巧不须要我多说了吧:
按住Ctrl 能够单个多选,
按住Shift能够连续多选。
选出图片。并把他们增加进来。
假设没有图片,拿以下的凑合一下吧:
然后点击 左上角 的Filebutton:
然后,在下拉的菜单中,选 Public sprite sheet 。然后就选择存放 PNG和PLIST的文件夹:
先是plist文件夹,然后是PNG文件夹。最好两个文件名称是一样的。
接着,就会给你输出出来了:
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******************************************
版权声明:本文博主原创文章,博客,未经同意不得转载。
转载于:https://www.cnblogs.com/blfshiye/p/4797222.html
Cocos2d-x 3.x plist+png 做动画相关推荐
- cocos2d-x使用TexturePacker打包图片及使用生成的plist文件创建精灵动画
在使用TexturePacker打包工具之前先对动画的每一帧图片命名,我这里选取的cocos2d-x实例程序里面的图片,为了方便只提取了前面4帧的图片 然后打开安装好的TexturePakcer,该工 ...
- 用silverlight做动画-相机
用silverlight做动画-相机 适合初学者学习 做一个相机的动画 和做flash动画一样,准备好素材 将素材放入项目中 开始正式制作前为了方便以后重用,就把这个动画做成usercontrol(和 ...
- [UWP]用Shape做动画(2):使用与扩展PointAnimation
上一篇几乎都在说DoubleAnimation的应用,这篇说说PointAnimation. 1. 使用PointAnimation 使用PointAnimation可以让Shape变形,但实际上没看 ...
- java 图片动画_java在窗口中添加图片做动画,怎么一闪一闪的?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 视频来自:优酷 在java中添加图片做动画效果,怎么一闪一闪的运动啊?怎样才能让它不闪的连续运动呢? 下面是代码,代码项目project里有两个类,一个是 ...
- paraView做动画(终极教程)
paraView做动画(终极教程) ① 效果最好的方法是: file菜单下的save animation 按钮,将每一针都输出成图片. 把导出的图片连成动画 推荐使用:EnVe和Demo3D Vide ...
- 关于iOS里的做动画方法的差别与注意事项
CoreAnimation与UIView.animation... 这两个方式的主要差别在于,前者如果不主动设置,那么在动画做完以后,会恢复原状. 后者则不会,动画做完后是什么样,控件就是什么样. U ...
- 沿着path路径做动画
沿着path路径做动画 路径 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 16/1/26 ...
- python能制作ppt动画效果吗_你听说过Python可以做动画吗
如果Python可以做动画 用Python来写动画,有这么神奇吗? 这个网站的效果图如下,分为两个区域,画布区用于显示动画,代码区编写代码(不用安装任何软件哦~) image.png 零基础的人可以学 ...
- unity2D动画-角色切片与2DAnimation插件做动画
unity2D动画-角色切片做动画 写在前面的话 开发环境与准备 用角色切片做动画 终于可以Key动画了 2DAnimation插件做动画 总结 写在前面的话 更新 建议有复杂2D动画需求的话用spi ...
最新文章
- 清华特奖答辩前10出炉,两名CS学生3篇顶会一作,有人周读3000页英文论文!
- OpenCV改变图像的对比度和亮度
- 微软超融合私有云测试08-SCVMM部署之SQL Server与前置条件安装
- vue动态跟新layui的select_vue+layui实现select动态加载后台数据的例子
- 计算机组织菜单在哪里,1,计算机显示菜单在哪里
- 华为内部存储转sd卡_华为tit al00怎么将手机存储内容转移到sd卡
- C语言和设计模式(状态模式)
- linux新建自定义命令,Linux 创建自定义命令
- [转载]Badboy使用教程
- Spring Cloud随记---分布式配置中心初探--一个单节点的配置中心
- iOS:fishhook原理分析
- 史上最详细的F450四轴装机实例(无名官方推荐的)
- python正则表达式--爬取百度文库内容
- h3c无线控制器ac配置
- php 车牌号限号,机动车限行尾号今天起轮换 周一至周五分别限行 4 和 9、5 和 0、1 和 6、2 和 7、3 和 8...
- eyoucms使用入门 一
- 王者荣耀: 史上最长对局, 无法打破的神话英雄, 10小时4千人头
- 全球2%高智商天才必测脑力题!却只有1%的人,能在5分钟内全部做对!
- 使用Java-Hanlp训练CRF模型
- python3多线程下载图片_Python3多线程爬取meizitu的图片
热门文章
- IntelliSense: const char * 类型的实参与 LPCTSTR 类型的形参不兼容
- MATLAB 基本数据类型和调用方式
- django--模板继承、组件、自定义标签
- oracle误删scott文件如何恢复
- 【Codeforces 986B】Petr and Permutations
- [moka同学笔记]PHP操作Redis收集
- linux中chmod与chown两个命令详解
- 封装对MongoDB数据库的增删改查访问方法(基于MongoDB官方发布的C#驱动)
- AUTOCAD自学教程一
- Oracle spatial 周边查询SQL