【移动应用开发技术】来源于 一般讨论 分类 疯狂ios讲义之cocos2d中的动画_第1页
【移动应用开发技术】来源于 一般讨论 分类 疯狂ios讲义之cocos2d中的动画_第2页
【移动应用开发技术】来源于 一般讨论 分类 疯狂ios讲义之cocos2d中的动画_第3页
【移动应用开发技术】来源于 一般讨论 分类 疯狂ios讲义之cocos2d中的动画_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】来源于一般讨论分类疯狂ios讲义之cocos2d中的动画

cocos2d中的动画在每一个游戏当中,都有很多各种各样的动画效果,比如街头霸王中的旋风腿,植物大战僵尸中豌豆的扭动、僵尸的走路、***动作等,虽然简单的移动动作也可以实现这些功能,但是这样看上去非常的笨拙和不真实。那么这些效果到底是如何实现的呢?其实很简单,我们只需要将一系列图片按照特定的顺序排列,然后在精灵对象上执行特定的动画动作就可以了。1

cocos2d中动画相关的类在cocos2d中实现动画,需要了解以下几个类。

q

CCAnimate:该类为一种特殊的动作,也称为动画动作。

q

CCAnimation:该类封装了一个精灵帧序列和各个精灵帧之间的延迟时间,作为精灵播放动画的参数。

q

CCAnimationCache:该类是一个单例,作为一个缓存池来缓存CCAnimation动画。2

简单动画效果接下来我们通过示例演示在cocos2d中实现动画效果。在Xcdoe中使用cocos2d模板创建一个项目,命名为“AnimationTest”,加入准备好的图片资源,本例为8张植物大战僵尸中的僵尸图片,利用这些单独的图片创建动画,完成一个僵尸走路的动画效果。实现代码如下。程序清单:codes/13/13.11/AnimationTest/AnimationTest/HelloWorldLayer.m-(id)init{

if((self=[superinit])){

CGSizewinSize=[[CCDirectorsharedDirector]winSize];

CCSprite*bgSprite=[CCSpritespriteWithFile:@"gamebg.png"];

bgSprite.position=ccp(winSize.width/2,winSize.height/2);

[selfaddChild:bgSprite];

//创建僵尸精灵,并设置坐标位置在屏幕之外

CCSprite*zSprite=[CCSpritespriteWithFile:@"z_00_01.png"];

zSprite.position=ccp(winSize.width+zSprite.contentSize.width/2,winSize.height/2);

[selfaddChild:zSprite];

//创建CCAnimation动画,指定动画帧的内容

CCAnimation*anim=[CCAnimationanimation];

[animaddSpriteFrameWithFilename:@"z_00_01.png"];

[animaddSpriteFrameWithFilename:@"z_00_02.png"];

[animaddSpriteFrameWithFilename:@"z_00_03.png"];

[animaddSpriteFrameWithFilename:@"z_00_04.png"];

[animaddSpriteFrameWithFilename:@"z_00_05.png"];

[animaddSpriteFrameWithFilename:@"z_00_06.png"];

[animaddSpriteFrameWithFilename:@"z_00_07.png"];

[animaddSpriteFrameWithFilename:@"z_00_08.png"];

//创建animAction动画,restoreOriginalFrame:YES

//可以让精灵对象在动画执行完后恢复到最初状态

idanimAction=[CCAnimateactionWithDuration:1.5fanimation:anim

restoreOriginalFrame:YES];

//定义一个动作,重复执行CCAnimate动画

idrepeatanimAction=[CCRepeatForeveractionWithAction:animAction];

//定义一个动作,让精灵对象移动到特定的位置

idmoveTo=[CCMoveToactionWithDuration:10.0f

position:ccp(-zSprite.contentSize.width/2,winSize.height/2)];

//僵尸精灵重复执行动画动作和移动动作

[zSpriterunAction:repeatanimAction];

[zSpriterunAction:moveTo];

}

returnself;}-(id)init{

if((self=[superinit])){

CGSizewinSize=[[CCDirectorsharedDirector]winSize];

//①读取plist文件将精灵帧纹理添加到精灵帧缓存当中

[[CCSpriteFrameCachesharedSpriteFrameCache]

addSpriteFramesWithFile:@"animation.plist"];

//②创建一个精灵表单

CCSpriteBatchNode*batchNode=[CCSpriteBatchNode

batchNodeWithFile:@"animation.png"];

//③将精灵表单作为层的子节点添加到层当中

[selfaddChild:batchNode];

//④创建背景精灵添加到精灵表单中

CCSprite*bgSprite=[CCSpritespriteWithSpriteFrameName:@"gamebg.png"];

bgSprite.position=ccp(winSize.width/2,winSize.height/2);

[batchNodeaddChild:bgSprite];

//⑤创建僵尸精灵,设置坐标位置在屏幕之外

CCSprite*zSprite=[CCSpritespriteWithSpriteFrameName:@"z_00_01.png"];

zSprite.position=ccp(winSize.width+zSprite.contentSize.width,winSize.height/2);

//⑥创建一个数组用来保存动画

NSMutableArray*array=[NSMutableArrayarray];

//遍历所有图片,然后从精灵帧缓存中获取与图片名称相对应的精灵帧保存到数组当中

for(inti=1;i<=8;i++){

NSString*fileName=[NSStringstringWithFormat:@"z_00_0%i.png",i];

CCSpriteFrame*frame=[[CCSpriteFrameCachesharedSpriteFrameCache]

spriteFrameByName:fileName];

[arrayaddObject:frame];

}

//⑦创建一个动画并设计成重复动作

idanimation=[CCAnimationanimationWithSpriteFrames:arraydelay:0.1f];

idanimate=[CCAnimateactionWithAnimation:animation];

idrepeate=[CCRepeatForeveractionWithAction:animate];

//⑧创建一个CCMoveTo让精灵移动到特定的位置

idmoveTo=[CCMoveToactionWithDuration:10.0f

position:ccp(-zSprite.contentSize.width/2,winSize.height/2)];

//⑨让僵尸精

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论