Добавление подкласса CCSprite в сцену - PullRequest
0 голосов
/ 24 февраля 2012

Я недавно решил создать подкласс для своего спрайта, но я немного не знаю, как добавить их в сцену.На данный момент я создал свой подкласс CCSprite, используя New File> Cocos2d> CCNode> Subclass of ... 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 ]

2 голосов
/ 24 февраля 2012

Вот как правильно создать подкласс 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 голос
/ 24 февраля 2012

Так же, как вы добавляете CCSprites и другие классы.

Mos *newMos = [[Mos alloc] init];
// set coordinates and other properties
[scene addChild:newMos];
[newMos release];

Edit:

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