Cocos2d 自定义Sprite的实现方法
2011-07-27 19:09
381 查看
在用Cocos2d开发游戏时,需要自定义Sprite
object-c是不推荐使用继承的,因此通常使用聚合
自定义一个类A继承自CCNode,其中包括一个CCSprite的指针
类A代表场景中的一个角色,包括玩家、怪物、场景元素等,类A中可以添加一些成员变量,用于实现游戏逻辑。
而该角色的显示,就交给CCSprite完成,简单说就是一张图片。。。
对于theGame的属性,我使用的是assign,看到有的书上使用的是retain,对此我不是很赞同
依我看来,使用retain的话,那么Hero retain theGame,theGame 又 retain 了Hero中的mySprite。
这样虽然不是一定会造成内存问题,但是至少增加了内存释放的复杂性。
这与delegate通常都是assign的原因类似。
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的原因类似。
相关文章推荐
- Cocos2d 自定义Scene的实现方法
- 通过Apache的HttpClient来实现HTTP的GET方法(自定义URI)
- Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明
- Android自定义View的实现方法,带你一步步深入了解View(四)
- js 自定义方法 实现停留几秒 sleep
- UITableView实现选择框和编辑状态时cell向右移动的自定义方法
- Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明
- C#实现自定义定时组件的方法
- thinkPHP3.2实现分页自定义样式的方法
- Android自定义View的实现方法,带你一步步深入了解View(四)
- 如何:实现和调用自定义扩展方法(C# 编程指南)
- cocos2d-x 基于CCClippingNode实现CCLayer遮罩功能,在滑动时超出剪切区域的实现显示部分的效果,不需要再借助其他sprite来遮挡了
- jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
- JavaScript自定义函数实现查找两个字符串最长公共子串的方法
- html 自定义标签使用实现方法
- Android自定义View的实现方法,带你一步步深入了解View(四)
- JavaScript自定义方法实现trim()、Ltrim()、Rtrim()
- 双击CAD对象,显示自定义对话框实现方法
- Log4J日志配置详解和自定义log4j日志级别及输出日志到不同文件实现方法
- SpriteBuilder&Cocos2D使用CCEffect特效实现天黑天亮过度效果