您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d 自定义Sprite的实现方法

2011-07-27 19:09 381 查看
在用Cocos2d开发游戏时,需要自定义Sprite
object-c是不推荐使用继承的,因此通常使用聚合
自定义一个类A继承自CCNode,其中包括一个CCSprite的指针
类A代表场景中的一个角色,包括玩家、怪物、场景元素等,类A中可以添加一些成员变量,用于实现游戏逻辑。
而该角色的显示,就交给CCSprite完成,简单说就是一张图片。。。
@interface Hero : CCNode {
CCSprite *mySprite;
GameLayer *theGame;
}

@property (nonatomic, retain) CCSprite *mySprite;
@property (nonatomic, assign) GameLayer *theGame;

-(id) initWithGame:(GameLayer *)game;

@end
@implementation Hero

@synthesize mySprite;
@synthesize theGame;

-(id) initWithGame:(GameLayer *)game {
self = [super init];

if (self != nil) {
self.theGame = game;

mySprite = [CCSprite spriteWithFile:@"hero.png"];
[mySprite setPosition:ccp(160, 50)];

[theGame addChild:mySprite z:2];
}

return self;
}

-(void) dealloc {
[super dealloc];
}

@end
其中theGame是该角色所在场景的layer。
对于theGame的属性,我使用的是assign,看到有的书上使用的是retain,对此我不是很赞同
依我看来,使用retain的话,那么Hero retain theGame,theGame 又 retain 了Hero中的mySprite。
这样虽然不是一定会造成内存问题,但是至少增加了内存释放的复杂性。
这与delegate通常都是assign的原因类似。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: