本文共 1492 字,大约阅读时间需要 4 分钟。
本节书摘来异步社区《Cocos2d 跨平台游戏开发指南(第2版)》一书中的第1章,第1.8节,作者: 【印度】Siddharth Shekar(谢卡)译者: 武传海 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。
在这一部分,我们将讨论如何让精灵动起来。我们将修改自定义精灵类,让角色动起来。通过提供带有许多图像的Cocos2D,并使之循环通过这些图像,即可产生动画效果。
为了让精灵动起来,我们将添加 4 帧动画,并将其应用到 hero 精灵类,通过使用repeatForever动作让图像循环动起来。在下一部分,我们将详细讲解有关动作的内容。
在本章的Resources文件夹中,含有hero帧的普通、ipad、ipadhd版本图像。我们把所有这些图像文件导入到项目中,如图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-24所示。动画的播放速度由CCAnimation类的延时进行控制。
我们将看到自定义精灵让人物角色动起来了,并且没有对MainScene中的实例做任何修改。
转载地址:http://koonl.baihongyu.com/