将CCSprite的子类添加到场景中

时间:2012-02-24 06:58:14

标签: ios xcode cocos2d-iphone subclass ccsprite

我最近决定将我的精灵子类化,但我对如何将它们添加到场景中有点无能为力。目前,我已经创建了我的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;
}

我想知道的是如何将这个精灵添加到我的游戏场景中。

2 个答案:

答案 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];
// ...