cocos2d的常用动作及效果总结之五:Animation

这一篇是讲一下如何在cocos2d中实现动画。

实现动画的步骤:

  1. 加载帧
  2. 生成动画对象
  3. 运行动画

加载帧我用过两种方式:

  1. 第一种是使用.plist文件,通过CCSpriteFrameCache读取动画帧,并加载到CCAnimation对象中,如下:
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"animate.plist"];NSMutableArray *walkAnimFrames = [NSMutableArray array];
    for(int i = 1; i <= 8; ++i) {[walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bear%d.png", i]]];
    }
    CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f];    id actions = [ CCRepeatForeveractionWithAction: [CCAnimateactionWithAnimation:walkAnim restoreOriginalFrame:NO] ];  
    [sprite runAction:actions];
     这里面的 .plist 是什么呢?

    我们知道动画实际上就是由一帧帧的图片连续播放产生的,那么我们在cocos2d中实现动画时,首先要把所有的动画帧加载到内存中,但一张一张的加载比较费时费事,所有,就会有工具把所有的图片 揉成一个图片,横七竖八的放到一个图片文件中,为了再把这些图片分离出来,就需要一个数据文件记载每一个图片的位置及其大小,这个文件就是上面提到的 .plist 文件。

    下图左边就是图片文件,而右侧的是 .plist 文件的内容。

  1. .plist 文件可以通过Zwoptex 或 TexturePacker程序生成, Zwoptex的flash版本是免费的,桌面版是收费的,TexturePacker初级版是免费的,高级版是收费的。
     
  2. 如果你不想花钱买上面这两个软件,有什么办法不用 .plist 文件的形式加载动画吗?答案是有,目前我就是不用 .plist 的形式加载动画的,下面先给出代码:
    CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:fileName];    
    NSMutableArray *animFrames = [NSMutableArray array];
    [animFrames removeAllObjects];for (int i=0; i<frameCount; i++) {CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:texture rect:CGRectMake(spriteWidth*i,0, spriteWidth,spriteHeight)];[animFrames addObject:frame];
    }
    CCAnimation *animation =[CCAnimation animationWithFrames:animFrames delay:delay];id actions = [ CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO] ];  
    [sprite runAction:actions];
    
    这种方法的不同主要在于,加载帧时,使用的是  CCSpriteFrame frameWithTexture:(CCTexture2D*)texture rect:(CGRect)rect ,也就是,直接加载图片,然后使用 CGRect 来指定加载图片的位置。

    比如,上面的代码中表示的就是动画图片是按照水平排列的,每个动画帧的宽是 spriteWidth, 高是 spriteHeight,然后,通过水平移动坐标,来一个一个的加载图片。

两种方式,区别仅仅在于如何加载动画帧,其他的步骤是一样的。


下面说一下如何改变精灵的图片。当你的操纵的精灵,吃了什么东东,然后变身了,那么显示在屏幕上的图片就要变化,那么如何设定呢?

  1. CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:@"grossini_dance_02.png"];
    [sprite1 setDisplayFrame:frame];
    这种方法适用于适用 .plist的方式加载帧的方式,因为每一个帧都有自己的名字,所以很容易通过名字取得指定的帧。
  2. [self setTextureRect:CGRectMake(80, 0, 40, 40)];
    
    这种方式适用于我第二种加载动画的方式,这种方式没有像.plist那种方式那样指定了每个帧的名字,所以,可以通过直接指定 位置的方式来替换 精灵的图片。
  3. [self setTexture:(CCTexture2D *) texture];
    这种的话,直接适用 CCTexture2D对象来替换。

关于他们有什么不同,有人说 setDisplayFrame 不会改变精灵的大小,替换帧后,会调整显示比例是精灵的大小不改变,而setTexture会改变精灵的大小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雷鸟html签名设置,thunderbird 使用OpenPGP加解密邮件

一、添加插件Enigmail二、进行密钥管理&#xff0c;并创建->新密钥对三、选择账户&#xff0c;选择有无密码&#xff0c;创建密钥。根据提示选择是否要撤销文件。选择无密码创建密钥对速度快。最好选择生成撤销证书&#xff0c;在以后密钥对无用时告诉密钥服务器撤销无效公钥…

3ds Max 2018 在安装后无法启动或出现不稳定

问题&#xff1a; 安装 3ds Max 2018 后&#xff0c;软件无法正常启动&#xff0c;或在打开后不久出现不稳定和崩溃。 原因&#xff1a; 有多种原因可能会导致这些错误&#xff1a; ▪ 3ds Max、Windows 更新和 ProSound.dlc 声音驱动程序之间发生冲突&#xff1b; ▪ Windows …

c++中内敛函数_C/C++求职者必备 23 道面试题,一道试题一份信心

1、 Static有什么用途&#xff1f;(1)函数体内static变量的作用范围是该函数体&#xff0c;该变量的内存只被分配一次&#xff0c;因此它的值在下次调用时不变&#xff1b; (2)模块内的static全局变量同样只能在该模块内的函数访问和调用&#xff0c;不能被模块外的其他函数访问…

启动图一键生成工具_一键即运行!清华团队推出图深度学习工具包CogDL v0.1

一行代码命令可以做什么&#xff1f;“一行命令可以实现‘一条龙’运行实验。”访问 http://github.com/THUDM/cogdl 一键体验&#xff01;近年来&#xff0c;结构化数据的表示学习备受业界关注与热捧&#xff0c;图神经网络成为处理相关工作的有力工具&#xff0c;基于随机游走…

工业机器人 扬州 江都_扬州市14家企业获批2019年江苏省示范智能车间

近日&#xff0c;我省正式发布2019年江苏省示范智能车间名单&#xff0c;所谓智能车间&#xff0c;是指将机器人、智能设备、信息技术三者在制造过程中全流程融合&#xff0c;实现自动决策、精确执行命令、精益管理。2019年&#xff0c;扬州市潍柴扬柴、新联汽车、江淮汽车等14…

pcb设计单点接地示意图_答案:关于PCB 的EMC设计知识考卷

(评分标准:本试卷作为培训效果评价依据,试卷满分为100分) ____________________________________________________________________________________________________________ 一、 判断题(每题2分) 1.塑料外壳产品的EMC性能只取决于PCB设计&#xff0c;与电缆的位置和PCB之间的…

深大计算机科学与技术在广东省,广东考生请注意:深圳大学2021年计划本省总招生人数比例超过75%!...

深圳大学&#xff0c;简称“深大”由于位于我国改革开放的经济前沿发展阵地——广东省深圳市&#xff0c;自1983年建校以来&#xff0c;学校发展迅猛&#xff0c;根据去年的招生录取分数来看&#xff0c;仅低于广东四所211高校(中山大学、华南理工大学、暨南大学、华南师范大学…

协方差公式性质证明过程_论文推荐 | 刘志平:等价条件平差模型的方差-协方差分量最小二乘估计方法...

《测绘学报》构建与学术的桥梁 拉近与权威的距离等价条件平差模型的方差-协方差分量最小二乘估计方法刘志平1, 朱丹彤1, 余航1, 张克非1,21. 中国矿业大学环境与测绘学院, 江苏 徐州 221116; 2. 皇家墨尔本理工大学空间科学研究中心, 澳大利亚 维多利亚州 墨尔本 3001收稿日期&…

Eclipse使用Team explorer everywhere进行代码管理

Visual Studio Team Explorer Everywhere 2010主要包含两大组件&#xff0c;参考图&#xff1a; ●Team Explorer Everywhere&#xff1a;它是Eclipse的Plug-in组件&#xff0c;让Eclipse能够使用TFS的版本管控、工作项目(Work Item)、Team Build、以及报表等功能&#xff0c;…

mysql服务不能启动的几大原因

mysql服务不能启动的几大原因 1.存放数据库的路径的属主以及属组不是mysql 此时把/mydata/data目录的属主以及属组改为mysql即可&#xff1a;# chown –R mysql.mysql /mydata/data是不是可以启动mysql服务了呢&#xff01;2.有关mysql的进程没有结束掉导致mysql服务不能正常启…

计算机无法安装系统,一招就能搞定“这台电脑无法安装 Windows 11”的解决方法...

微软已经正式发布了 Windows 11。虽然公开发布为今年晚些时候&#xff0c;但微软的 PC Health Check (中文名电脑健康状况检查)应用程序允许 Windows 10 用户检查他们的计算机是否满足安装 Windows 11 的最低系统要求。不幸的是&#xff0c;许多用户运行 PC Health Check 应用程…

7开启uasp协议_【环海解读】新版通关无纸化协议签约amp;报关代理委托发起和确认操作流程...

最近&#xff0c;小编经常收到咨询&#xff0c;作为进出口货物收发货人&#xff0c;如何使用新版通关无纸化协议签约系统和报关代理委托系统呢&#xff1f;客官莫急&#xff0c;今日就为大家提供一份科普篇&#xff0c;让您顺利完成报关前准备工作。下面小编将对登录及操作步骤…

【英语天天读】I want I do I get

There’s a great song out there by Jimmy Cliff, one of reggae’s top artists, that in six words summarizes just how you succeed in life: I want I do I get. These six words are a very powerful way of connecting what you want with what you will achieve. Firs…

html怎么引入本地css文件路径,html如何引入css文件

引入方法&#xff1a;1、使用link标签引入&#xff0c;语法“”&#xff1b;2、在stylet标签中&#xff0c;使用“import”规则引入&#xff0c;语法“import url(css文件地址)”。本教程操作环境&#xff1a;windows7系统、CSS3&&HTML5版、Dell G3电脑。html引入css文…

数据库查询前十条数据_西门子PLC1200组态王-Access数据库-⑨数据库查询

西门子PLC1200-组态王跟Access数据库--⑨数据库查询组态王记录不同类型变量到数据库&#xff0c;和数据库数据查询到组态王界面1.0 从左边栏选择表格模板&#xff0c;level1和level2分别设置整型和布尔型2.0 设置记录本&#xff0c;要对应level1和level2&#xff0c;配置一个整…

win10计算机本地无法连接,win10无法连接到这个网络怎么办_win10无法连接到这个网络如何解决...

我们在操作win10系统电脑的时候&#xff0c;通常都需要先进行网络连接才能够浏览网页&#xff0c;但是最近有用户在使用win10系统电脑的时候出现了无法连接这个网络的提示&#xff0c;那么win10无法连接到这个网络怎么办呢&#xff1f;下面就来教大家win10无法连接到这个网络的…

Restful对于URL的简化

REST是英文representational state transfer(表象性状态转变)或者表述性状态转移&#xff0c;它是web服务的一种架构风格。使用HTTP&#xff0c;URI&#xff0c;XML&#xff0c;JSON&#xff0c;HTML等广泛流行的标准和协议&#xff1b;轻量级&#xff0c;跨平台&#xff0c;跨…

从文件中读出数据显示在表格中_玩转表格:如何在Word表格中进行数据计算?...

Word文档中的表格也可以进行数据运算的。例如&#xff0c;要对表格中第1季度的数据进行求和计算时&#xff0c;具体操作方法如下。1第1步&#xff1a;将光标置于要输入合计值的单元格中&#xff0c;切换到【表格工具】栏中的【布局】选项卡中&#xff0c;在【数据】组中单击【公…

第八讲:tapestry组件

2019独角兽企业重金招聘Python工程师标准>>> tapestry组件有不少&#xff0c;具体的使用方法可去官网了解&#xff0c;常用的组件会在以后的教程中讲到。这篇文章主要以pagelink为例&#xff0c;简单讲解下组件通常使用的方法&#xff0c;以下可看出同是跳转到Index…

锁存器的工作原理_数字电路学习笔记(十):更多锁存器和触发器

上一章中提到了普通RS锁存器的两大缺点&#xff1a;1. S端口和R端口不能同时有效&#xff0c;但实际应用中不能保证这种情况不出现&#xff0c;此时可能会出错&#xff1b;2. 在计算机中&#xff0c;有许多内存单元协同组成一个寄存器&#xff0c;存储同一个数据。但每一位数据…