在Cocos2d iPhone中继承CCSprite

在Cocos2d iPhone中继承CCSprite,iphone,objective-c,inheritance,cocos2d-iphone,Iphone,Objective C,Inheritance,Cocos2d Iphone,我已经准备好了很多地方,它们告诉我不应该继承CCSprite类,而应该将一个sprite作为成员变量添加到我的类中 以下是我所做的: 创建了一个CCNode类, 在我的节点类中添加了一个CCSprite变量, 初始化我的精灵并将其作为子节点添加到我的节点 现在我有了一个CCLayer,我想在其中绘制这些精灵,但当我将节点添加为子节点时,什么都不会绘制。如果我将节点sprite添加为子节点,而不是它将绘制的节点 我的问题是,是否可以通过将节点作为子节点添加到层来绘制精灵,还是添加精灵是唯一的方法

我已经准备好了很多地方,它们告诉我不应该继承CCSprite类,而应该将一个sprite作为成员变量添加到我的类中

以下是我所做的: 创建了一个CCNode类, 在我的节点类中添加了一个CCSprite变量, 初始化我的精灵并将其作为子节点添加到我的节点

现在我有了一个CCLayer,我想在其中绘制这些精灵,但当我将节点添加为子节点时,什么都不会绘制。如果我将节点sprite添加为子节点,而不是它将绘制的节点

我的问题是,是否可以通过将节点作为子节点添加到层来绘制精灵,还是添加精灵是唯一的方法

我是Objective-c和iPhone开发人员的新手,因此非常感谢您的帮助

编辑 这是我的CCNode类-animalSprite是我的CCSprite

    @implementation Animal

    @synthesize animalSprite = _animalSprite;

    -(Animal *) initWithFile:(NSString *)texture position:(CGPoint) position
    {
        self.animalSprite = [CCSprite spriteWithFile:texture];
        self.animalSprite.position = position;
        self.animalSprite.scale = 0.25f;
        [self addChild:self.animalSprite];

        return self;
    }

    -(void) dealloc{

        [super dealloc];
    }

@end
现在在我的CCLayer类中有一个level变量,它包含我的节点列表

//Load Level
Level *level = [LoadLevel loadLevel];

for (Animal *animal in level.animals)
{
    [self addChild:animal];
}
编辑我创建我的节点对象,然后按以下方式将它们添加到levels类中的数组中

试着读这篇文章

希望你有同样的问题,在你使用精灵之前,它会被释放

干杯

塔兹


最新游戏链接:

好,本文建议不要从CCNode继承,而是从NSObject继承,然后将精灵添加到层中。我想这是有道理的,但如果我想从层中检索子对象,我只会获取精灵,而不是NSObject。而且我在代码中看不到父类可能释放其子对象的任何地方,所以我认为这不是问题所在。您不需要在精灵初始化块周围添加以下内容吗
if((self=[super init]){
}
试试,看看它是否解决了问题。根据我的经验,如果你对对象进行子类化,你需要先调用父类初始化。PS我不在Mac电脑旁,所以我自己无法尝试,我只是凭记忆记住;-)啊,我知道我错过了一些简单的事情。非常感谢:)
Animal *animal = [[[Animal alloc] initWithFile:animalFileName position:position] autorelease];
[level.animals addObject:animal];