Ios 在我的游戏中实现CCSprite类
在我使用cocos2d的游戏中,将会有许多不同类型的敌人,它们看起来都不同,移动方式也不同。另外,将会有两种不同的游戏模式,它们都使用相同的敌人。由于将有不同的游戏模式,我决定让我的每个敌人都有自己的CCSprite类。其中包括精灵的移动方式、动画等。当我的游戏需要这些精灵中的一个时,它们将在场景中生成。唯一的问题是,我该怎么做?当精灵使用自己的类时,如何在屏幕上创建一个精灵 如果你想告诉我另一种方法,而不是让这些精灵拥有自己的职业,那很好,但请记住,我将拥有两种不同的游戏模式。如果我在该游戏模式的CCLayer类中为精灵编写代码,那么我必须编写两次代码,这需要时间Ios 在我的游戏中实现CCSprite类,ios,xcode,cocoa-touch,cocos2d-iphone,Ios,Xcode,Cocoa Touch,Cocos2d Iphone,在我使用cocos2d的游戏中,将会有许多不同类型的敌人,它们看起来都不同,移动方式也不同。另外,将会有两种不同的游戏模式,它们都使用相同的敌人。由于将有不同的游戏模式,我决定让我的每个敌人都有自己的CCSprite类。其中包括精灵的移动方式、动画等。当我的游戏需要这些精灵中的一个时,它们将在场景中生成。唯一的问题是,我该怎么做?当精灵使用自己的类时,如何在屏幕上创建一个精灵 如果你想告诉我另一种方法,而不是让这些精灵拥有自己的职业,那很好,但请记住,我将拥有两种不同的游戏模式。如果我在该游戏模
谢谢。您只需将CCSprite子类化并覆盖默认的初始值设定项
initWithTexture:rect:
从
你可以有一个超级类,比如说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];
谢谢你的回答,但是ivar1=xxx的确切含义是什么;ivar2=yyy;做什么?这只是个例子,你应该初始化你的ivarsOk,但是有没有可能把我的精灵的动画放到我的精灵类中,每次调用和创建精灵时,它可以制作动画?或者我应该在CCLayer类中这样做?我认为最好将精灵动画代码放入精灵类中,这样可以更容易地在另一层中重用相同的动画
EnemySprite *enemy = [BigEnemySprite spriteFromFile:file];
[enemy addToLayer:self];