我最近决定将我的精灵子类化,但我对如何将它们添加到场景中有点无能为力。目前,我已经创建了我的CCSprite子类,使用New File> Cocos2d> CCNode> ... CCSprite的子类。然后,我在Sprite.h文件中制作了我的精灵:
@interface Mos : CCSprite {
CCSprite *mos;
}
完成后,在Sprite.m中我编写代码:
@implementation Mos
-(id) init
{
if( (self=[super init])) {
mos = [CCSprite spriteWithFile:@"sprite_mos.png"];
}
return self;
}
我想知道的是如何将这个精灵添加到我的游戏场景中。
答案 0 :(得分:2)
以下是documentation所说的正确子类CCSprite
的方法:
@interface Mos : CCSprite {
// remove the line CCSprite *mos;
}
@implementation Mos
// You probably don't need to override this method if you will not add other code inside of it
-(id) initWithTexture:(CCTexture2D*)texture rect:(CGRect)rect
{
if( (self=[super initWithTexture:texture rect:rect]))
{
}
return self;
}
+ (id)sprite
{
return [Mos spriteWithFile:@"sprite_mos.png"];
}
@end
然后在您的代码中,您可以正常使用Mos:
Mos *mos = [Mos sprite];
[scene addChild:mos];
答案 1 :(得分:1)
与添加CCSprites和其他类的方式相同。
Mos *newMos = [[Mos alloc] init];
// set coordinates and other properties
[scene addChild:newMos];
[newMos release];
编辑:
@interface Mos : CCSprite {
// some member variables go here
}
@implementation Mos
-(id)init
{
CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"sprite_mos.png"];
if( texture ) {
CGRect rect = CGRectZero;
rect.size = texture.contentSize;
// set members to some values
return [self initWithTexture:texture rect:rect];
}
[self release];
return nil;
}
然后在你的场景课
中// ...
Mos *obj = [[Mos alloc] init];
// set position, etc
[scene addChild:obj];
[obj release];
// ...