且构网

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

《Cocos2d 跨平台游戏开发指南(第2版)》一1.7 创建自定义精灵类

更新时间:2021-12-25 07:55:18

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

1.7 创建自定义精灵类

前面我们只是考虑如何把一个精灵添加到场景中,然而,以后可能想要一个单独的精灵类,以便你能为它添加自己的行为。在这一部分,我们将讨论如何通过扩展基本的CCSprite类来创建自定义的精灵类。

1.7.1 准备工作

让我们一起看一下如何创建一个自定义精灵类,它拥有自己的运动,并且更新函数。

为此,我们要先创建新文件。

1.在菜单栏中,依次选择File-New-File,在iOS的Source下,选择Cocoa Touch Class,单击Next按钮,如图1-19所示。

《Cocos2d 跨平台游戏开发指南(第2版)》一1.7 创建自定义精灵类

2.接着,我们输入类名,在Subclass of中选择CCSprite,选择Language为Objective-C,单击Next按钮,如图1-20所示。


《Cocos2d 跨平台游戏开发指南(第2版)》一1.7 创建自定义精灵类

3.然后,如图1-21所示,单击Create按钮,将文件添加到项目中。


《Cocos2d 跨平台游戏开发指南(第2版)》一1.7 创建自定义精灵类

1.7.2 操作步骤

新建好文件之后,让我们对它们做一些改动,使其可以使用字符串作为文件名,且从文件创建精灵。

在Hero.h文件中,做如下修改:

#import "CCSprite.h"

@interface Hero :CCSprite{

  CGSizewinSize;
}

-(id)initWithFilename:(NSString *) filename;

@end

接着,修改Hero.m文件,如下:

#import "Hero.h"

@implementation Hero

-(id)initWithFilename:(NSString *)filename
{
  if (self = [super initWithImageNamed:filename]) {

  }

  return self;
}
@end

1.7.3 工作原理

为了创建自定义精灵类的实例,打开MainScene.h文件,导入Hero.h文件,创建Hero类的一个新实例,命名为hero,代码如下:

#import "Hero.h"

@interface MainScene :CCNode{

  CGSizewinSize;
  Hero* hero;

}

在MainScene.m文件中,在rtSprite代码之下,添加如下代码:

hero = [[Hero alloc]initWithFilename:@"hero.png"];
hero.position = CGPointMake(center.x - winSize.width/4,
winSize.height/2);
[selfaddChild:hero];

在上述代码中,我们使用hero.png文件初始化hero。在Resources文件夹中,我们必须把hero-ipad.png和hero-ipadhd.png文件导入到项目中,导入方式与前面添加Bg图像文件时一样。

接着,如图1-22所示,我们把hero放置到屏幕宽度的左四分之一处,位于屏幕中心的左侧,并且在屏幕高度的二分之一处。最后,把hero对象添加到场景中。


《Cocos2d 跨平台游戏开发指南(第2版)》一1.7 创建自定义精灵类

接下来,让我们一起看一下如何使hero动起来。