本节书摘来异步社区《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所示。
2.接着,我们输入类名,在Subclass of中选择CCSprite,选择Language为Objective-C,单击Next按钮,如图1-20所示。
3.然后,如图1-21所示,单击Create按钮,将文件添加到项目中。
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对象添加到场景中。
接下来,让我们一起看一下如何使hero动起来。