cocos2d-x 3.x之动画
来源:互联网 发布:不定积分 软件 编辑:程序博客网 时间:2024/06/11 16:20
动画由帧组成。在最简单的情况下,每一帧都是一个纹理。我们可以使用一个纹理序列来创建动画。然而显卡在绘图时,在纹理间的切换是一个巨大的开销,由于精灵可以显示部分纹理,因此通常更为高效的做法是把动画用到的多个纹理按照一定的顺序排列起来,然后放置在同一个纹理下。在创建动画时,我们不仅需要指定动画所使用的纹理,还需要指定每一帧所使用的是纹理的哪一部分。
为了方便地记录纹理的显示信息,cocos2d-x提供了框帧类SpriteFrame。一个框帧包含两个属性,纹理与区域。纹理指的是将要被显示的纹理,而区域指此纹理将要被显示的部分。因此在动画中我们使用框帧来表示每一帧的内容。
我们准备好了框帧的序列,匀速地播放这一系列帧动画就不成问题了,然而我们也经常需要非匀速的动画效果,此时每一帧显示的时间就需要特殊设置了。为了描述每一帧,除了框帧,我们还需要记录帧的持续时间。动画帧类AnimationFrame同样包含两个属性,框帧的引用和帧的延时。
当游戏中有个界面用到的图片非常多,第一次点进这界面时速度非常慢(因为要加载绘制很多图片)出现卡顿,我们可以使用TextureCache提前异步加载纹理,等加载结束,进入到这个界面再使用这些图片速度就会非常快。
我们使用Animation类描述一个动画,而精灵显示动画的动作则是一个Animate对象。动画动作Animate是精灵显示动画的动作,它由一个动画对象创建,并由精灵执行。
我们可以手动添加序列帧到Animation类,或者使用文件初始化Animation类。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
auto animation = Animation::create();
for
(
int
i =
0
; i <
10
; ++i)
{
char
s[
100
] = {
0
};
sprintf(s,
"%d.png"
, i);
// 添加精灵帧到Animation实例
animation->addSpriteFrameWithFile(s);
}
// 设置每一帧持续时间,以秒为单位
animation->setDelayPerUnit(
2
.8f /
10
.0f);
// 设置是否在动画播放结束后恢复到第一帧
animation->setRestoreOriginalFrame(
true
);
auto action = Animate::create(animation);
auto sprite = Sprite::create();
sprite->setPosition(
100
,
100
);
this
->addChild(sprite);
sprite->runAction(Sequence::create(action, action->reverse(), NULL));
0 0
- cocos2d-x 3.x之动画
- cocos2d-x 3.x之动画
- cocos2d-x学习 之 动画
- cocos2d-x 动画之SWF
- Cocos2d-x 3.x序列帧动画
- cocos2d-x 3.x 创建动画
- cocos2d-x 动画详解之二CCSpriteBatchNode
- cocos2d-x 动画详解之三CCSpriteFrame
- cocos2d-x 动画详解之四-CCSpriteFrameCache
- Cocos2d-x之帧动画Animate
- Cocos2d-x 之帧动画 Animate
- cocos2d-x与FLASH动画之Flash2Cocos2d-x
- cocos2d-x动画工具
- cocos2d-x 动画
- Cocos2d-x切换动画
- cocos2d-x CCAnimate 动画
- Cocos2d-x 系统动画
- Cocos2d-x 自定义动画
- Thrift 介绍及java实例
- cocos2d-x中的父类和子类之间的继承关系
- 【javascript】使用window.open()实现弹出广告框
- android studio导入android studio工程小记--持续更
- android 长连接总结
- cocos2d-x 3.x之动画
- Android 闹钟 开发过程记录(七)
- Python特殊语法:filter、map、reduce、lambda [转]
- Unbuntu下搭建嵌入式QT开发环境(Tiny210)
- Windows 2008允许多用户远程登录设置
- wget for windows
- cocos2d-x中的事件分发机制
- 4、JavaScript高级之闭包
- Hadoop 解除 “Name node is in safe mode”