Вы можете просто создать подкласс CCSprite и переопределить инициализатор по умолчанию initWithTexture:rect:
пример взят из здесь
@implementation MySprite
-(id) initWithTexture:(CCTexture2D*)texture rect:(CGRect)rect
{
if( (self=[super initWithTexture:texture rect:rect]))
{
// initialize your ivars here
//ivar1 = xxx;
//ivar2 = yyy;
//ivar3 = zzz;
}
return self;
}
@end
// And to create an instance of MySprite you simply do:
MySprite *sprite = [MySprite spriteWithFile...];
// or any of the supported CCSprite methods.
вы можете иметь суперкласс, скажем EnemySprite
это выглядит так
@interface EnemySprite : CCSprite
- (void)addToLayer:(CCLayer *)layer;
- (void)removeFromLayer:(CCLayer *)layer;
@end
, чем создать подкласс для каждого типа врагов, например:
@inteface BigEnemySprite : EnemySprite
@end
@implementation BigEnemySprite
- (void)addToLayer:(CCLayer *)layer {
[layer addChild:self];
// animation code for your big enemy
}
- (void)removeFromLayer:(CCLayer *)layer {
[layer removeChild:self];
// animation code
}
@end
, чем вы можете использовать их как
EnemySprite *enemy = [BigEnemySprite spriteFromFile:file];
[enemy addToLayer:self];