且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Cocos2d 跨平台游戏开发指南(第2版)》一1.8 让精灵动起来

更新时间:2022-08-17 08:39:09

本节书摘来异步社区《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所示。


《Cocos2d 跨平台游戏开发指南(第2版)》一1.8 让精灵动起来

在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类的延时进行控制。


《Cocos2d 跨平台游戏开发指南(第2版)》一1.8 让精灵动起来

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