博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Cocos2d 跨平台游戏开发指南(第2版)》一1.8 让精灵动起来
阅读量:6945 次
发布时间:2019-06-27

本文共 1492 字,大约阅读时间需要 4 分钟。

本节书摘来异步社区《Cocos2d 跨平台游戏开发指南(第2版)》一书中的第1章,第1.8节,作者: 【印度】Siddharth Shekar(谢卡)译者: 武传海 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.8 让精灵动起来

在这一部分,我们将讨论如何让精灵动起来。我们将修改自定义精灵类,让角色动起来。通过提供带有许多图像的Cocos2D,并使之循环通过这些图像,即可产生动画效果。

1.8.1 准备工作

为了让精灵动起来,我们将添加 4 帧动画,并将其应用到 hero 精灵类,通过使用repeatForever动作让图像循环动起来。在下一部分,我们将详细讲解有关动作的内容。

1.8.2 操作步骤

在本章的Resources文件夹中,含有hero帧的普通、ipad、ipadhd版本图像。我们把所有这些图像文件导入到项目中,如图1-23所示。

1_23

在Hero.m文件中,修改initWithFilename文件,如下:

-(id)initWithFilename:(NSString *)filename{  if (self = [super initWithImageNamed:filename]) {    NSMutableArray *animFramesArray = [NSMutableArray array];    for (inti=1; i<=4; i++){      [animFramesArrayaddObject:        [CCSpriteFrameframeWithImageNamed:        [NSStringstringWithFormat:@"hero%d.png",i ]]];    }    CCAnimation* animation =      [CCAnimation      animationWithSpriteFrames:animFramesArraydelay:0.3];    CCActionInterval *animate=      [CCActionAnimateactionWithAnimation:animation];    CCAction* repeateAnimation =      [CCActionRepeatForeveractionWithAction:animate];      [selfrunAction:repeateAnimation];    }  return self;}@end

在上述代码中,我们先是创建了一个NSMutableArray类型的新变量,命名为animFramesArray。然后,创建一个for循环,循环变量i从1到4,这是因为总共有4幅图像。通过传入想遍历的4幅图像的名称,我们把动画帧保存到数组之中。

接着,我们创建一个CCAnimation类型的变量,命名为animation,在4个动画帧中进行传递,并且添加延时,设置动画播放时间。

然后,我们创建一个CCActionInterval类型的变量animate,用来通过动画创建一个循环。接着,创建CCAction,调用repeat forever动作,用来不断循环遍历动画。

最后,在当前类上运行动作。

1.8.3 工作原理

现在,你应该能够看到人物角色动起来了,如图1-24所示。动画的播放速度由CCAnimation类的延时进行控制。

1_24

我们将看到自定义精灵让人物角色动起来了,并且没有对MainScene中的实例做任何修改。

转载地址:http://koonl.baihongyu.com/

你可能感兴趣的文章
mysql日常小练习-20171012
查看>>
将Python脚本打包成可执行文件
查看>>
Linux motd详解
查看>>
根据status 对mysql进行性能优化
查看>>
java之CountDownLatch看看笔记
查看>>
Implement_strStr --leetcode
查看>>
我的友情链接
查看>>
centos 7设置smtp发送163邮件
查看>>
我的友情链接
查看>>
文件服务器之Branchcache分布式缓存
查看>>
我的友情链接
查看>>
Java设计模式百例 - 抽象工厂模式
查看>>
依赖倒置原则 DIP(Dependence Inversion Principle)
查看>>
智能硬件的简单剖析
查看>>
三种不同的交换机mac端口绑定模式的区别
查看>>
JupyterLab安装地图插件
查看>>
教程:Akismet获取API KEY的方法
查看>>
实现 Ctrl+Enter 快捷发表留言功能
查看>>
Linux内核的Makefile和kconfig解读
查看>>
mysql innodb 下ENUM存储格式分析。
查看>>