1.8 让精灵动起来
在这一部分,我们将讨论如何让精灵动起来。我们将修改自定义精灵类,让角色动起来。通过提供带有许多图像的Cocos2D,并使之循环通过这些图像,即可产生动画效果。
1.8.1 准备工作
为了让精灵动起来,我们将添加 4 帧动画,并将其应用到 hero 精灵类,通过使用repeatForever动作让图像循环动起来。在下一部分,我们将详细讲解有关动作的内容。
1.8.2 操作步骤
在本章的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.8.3 工作原理
现在,你应该能够看到人物角色动起来了,如图1-24所示。动画的播放速度由CCAnimation类的延时进行控制。
我们将看到自定义精灵让人物角色动起来了,并且没有对MainScene中的实例做任何修改。
时间: 2024-12-21 22:15:21