[Cocos2d-x v3.x]序列帧动画
简单介绍
Cocos2d-x中。动画的详细内容是依靠精灵显示出来的,为了显示动态图片,我们须要不停切换精灵显示的内容。通过把静态的精灵变为动画播放器从而实现动画效果。
动画由帧组成,每一帧都是一个纹理,我们能够使用一个纹理序列来创建动画。
我们使用Animation类描写叙述一个动画,而精灵显示动画的动作则是一个Animate对象。
动画动作Animate是精灵显示动画的动作。它由一个动画对象创建,并由精灵运行。
创建方法
- 手动加入序列帧到Animation类
- 使用文件初始化Animation类
手动加入
手动加入的方法须要将每一帧要显示的精灵有序加入到Animation类中。并设置每帧的播放时间,让动画可以匀速播放。另外。还要通过`setRestoreOriginalFrame`来设置是否在动画播放结束后恢复到第一帧。创建好Animation实例后。须要创建一个Animate实例来播放序列帧动画。
|
在创建Animation实例时会用到下面几个接口:
- `addSpriteFrame`,加入精灵帧到Animation实例
- `setDelayUnits`。设置每一帧持续时间,以秒为单位
- `setRestoreOriginalFrame`,设置是否在动画播放结束后恢复到第一帧
- `clone`。克隆一个该Animation实例
文件加入
首先我们来了解下须要用到的AnimationCache类。
AnimationCache能够载入xml/plist文件,plist文件中保存了组成动画的相关信息,通过该类获取到plist文件中的动画。
在使用AnimationCache类时会用到下面几个接口:
- `addAnimationsWithFile`。加入动画文件到缓存,plist文件
- `getAnimation`,从缓存中获取动画对象
- `getInstance`。获取动画缓存实例对象
使用文件加入的方法仅仅需将创建好的plist文件加入到动画缓存里面。plist文件中包括了序列帧的相关信息。
再用动画缓存初始化Animation实例,用Animate实例来播放序列帧动画。
|
`注意:`3.0開始。Cocos2d-x使用getInstance来获取单例实例。
动画缓存(AnimationCache)
通常情况下,对于一个精灵动画。每次创建时都须要载入精灵帧,按顺序加入到数组,再创建相应动作类,这是一个很烦琐的计算过程。对于使用频率高的动画。比方走路动画。将其加入缓存能够有效减少每次创建的巨大消耗。
因为这个类的目的和缓存内容都很easy直接。所以其接口也是最简单了的。例如以下所看到的:
- static AnimationCache* getInstance(),全局共享的单例
- void addAnimation(Animation *animation, const std::string& name),加入一个动画到缓存
- void addAnimationsWithFile(const std::string& plist)。加入动画文件到缓存
- void removeAnimation(const std::string& name),移除一个指定的动画
- Animation* getAnimation(const std::string& name),获得事先存入的动画
`建议:`在内存警告时我们应该增加例如以下的清理缓存操作:
|
值得注意的是清理的顺序,我们推荐先清理动画缓存。然后清理精[灵帧缓存](https://github.com/chukong/cocos-docs/blob/master/manual/framework/native/v3/spriteframe-cache/zh.md),最后是[纹理缓存](https://github.com/chukong/cocos-docs/blob/master/manual/framework/native/v3/texture-cache/zh.md)。
依照引用层级由高到低。以保证释放引用有效。
[Cocos2d-x v3.x]序列帧动画的更多相关文章
- cocos2d-x 2.0 序列帧动画 深入分析
转自:http://blog.csdn.net/honghaier/article/details/8222401 序列帧动画主要有几个类: CCSpriteFrame:精灵帧信息,序列帧动画是依靠多 ...
- 时光煮雨 Unity3D实现2D人物动画① UGUI&Native2D序列帧动画
系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...
- iOS-动画效果(首尾式动画,代码快动画,核心动画,序列帧动画)
一.各个动画的优缺点 1.首尾动画:如果只是修改空间的属性,使用首尾动画比较方便,如果在动画结束后做后续处理,就不是那么方面了. 2.核心动画:有点在于对后续的处理方便. 3.块动画: (1)在实际的 ...
- Unity3d的序列帧动画
马上这星期就要过去了,为了完成每星期写一篇博客的目标,熬夜也要写完. 最近项目中用到了很多序列帧动画,之前看教程也接触过序列帧动画,但当时没用到,就没仔细研究,这次就借着这个机会好好总结一下序列帧动画 ...
- (二)plist的使用和序列帧动画
六.plist的使用方法: iOS的程序在安装在手机上以后会把全部资源文件集成在一个文件夹中,这种文件集合称为bundle,对于一般的工程,只有一个bundle,即mainbundle,因此可以通过b ...
- iOS开发基础-序列帧动画之Tom猫
新建一个Single View Application,向该工程中导入Tom猫的图片资源,本示例演示Tom猫喝牛奶的动作.图片的名字为 drink_00.jpg.drink_01.jpg.....dr ...
- Unity Shader序列帧动画学习笔记
Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...
- UnityShader 序列帧动画效果
实现原理:主要思想是设置显示uv纹理的大小,并逐帧修改图片的uv坐标. 实现步骤 1.我们首先用_Time.y和速度属性_Speed相乘得到模拟的时间. 2.然后我们用time除以_Horizonta ...
- (转)NGUI系列教程七(序列帧动画UITexture 和 UIsprit)
NGUI系列教程七(序列帧动画) 今天我给大家讲一下如何使用NGUI做序列帧动画.本节主要包括两方面内容,分别是使用UIspirit和使用UITexture 做序列帧动画.废话不说了,下面开始.还 ...
随机推荐
- python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法
一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放 ...
- OLEDB 连接EXCEL的连接字符串IMEX的问题(Oledb)
今天碰到一个问题需要想EXCEL表中写数据,折腾了好久才发现是IMEX惹得祸,所以记录下提醒自己,也希望大家不要出同样的错. 碰到问题:使用语句 "insert into [Sheet1$] ...
- 002_系统表查询(sysdatabases等)
002_系统表查询(sysdatabases等) --1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name --2.获取所有表 ...
- iOS 网络与多线程--4.同步Post方式的网络请求
通过Post请求方式,同步获取网络数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据 在ViewController.m文件内的viewDidLoad函数添加一下测试代码 - (void) ...
- Caused by: java.lang.NullPointerException, java.lang.reflect.InvocationTargetExc
java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native M ...
- uva10020 贪心
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- libusb简介
概述 libusb是一个C库,它提供了通用的访问USB设备. 它的目的是供开发人员使用方便的生产与USB通信硬件的应用程序. 可移植的: 使用一个跨平台API,它提供了访问USB设备在Linux上,O ...
- mysql 查询copy to tmp table造成堵塞
show full PROCESSLIST; show VARIABLES like 'tmp_table_size' set GLOBAL tmp_table_size=629145600; SHO ...
- Flume笔记--source端监听目录,sink端上传到HDFS
官方文档参数解释:http://flume.apache.org/FlumeUserGuide.html#hdfs-sink 需要注意:文件格式,fileType=DataStream 默认为Sequ ...
- FPGA那些事 --经典总结
规范很重要 工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现有错,回头再看自 ...