Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在我的游戏中实现CCSprite类_Ios_Xcode_Cocoa Touch_Cocos2d Iphone - Fatal编程技术网

Ios 在我的游戏中实现CCSprite类

Ios 在我的游戏中实现CCSprite类,ios,xcode,cocoa-touch,cocos2d-iphone,Ios,Xcode,Cocoa Touch,Cocos2d Iphone,在我使用cocos2d的游戏中,将会有许多不同类型的敌人,它们看起来都不同,移动方式也不同。另外,将会有两种不同的游戏模式,它们都使用相同的敌人。由于将有不同的游戏模式,我决定让我的每个敌人都有自己的CCSprite类。其中包括精灵的移动方式、动画等。当我的游戏需要这些精灵中的一个时,它们将在场景中生成。唯一的问题是,我该怎么做?当精灵使用自己的类时,如何在屏幕上创建一个精灵 如果你想告诉我另一种方法,而不是让这些精灵拥有自己的职业,那很好,但请记住,我将拥有两种不同的游戏模式。如果我在该游戏模

在我使用cocos2d的游戏中,将会有许多不同类型的敌人,它们看起来都不同,移动方式也不同。另外,将会有两种不同的游戏模式,它们都使用相同的敌人。由于将有不同的游戏模式,我决定让我的每个敌人都有自己的CCSprite类。其中包括精灵的移动方式、动画等。当我的游戏需要这些精灵中的一个时,它们将在场景中生成。唯一的问题是,我该怎么做?当精灵使用自己的类时,如何在屏幕上创建一个精灵

如果你想告诉我另一种方法,而不是让这些精灵拥有自己的职业,那很好,但请记住,我将拥有两种不同的游戏模式。如果我在该游戏模式的CCLayer类中为精灵编写代码,那么我必须编写两次代码,这需要时间


谢谢。

您只需将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];