我不知道这是否可行,但我想创建一个大纹理地图集并将其用于所有类的应用程序。Cocos2D 2.0 - 一个CCSpriteBatchNode可以用于多个类吗?
一个CCSpriteBatchNode可以用于多个类吗?
假设我在主类
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"atlasGeral.plist"];
self.batchNodeGeneral = [CCSpriteBatchNode batchNodeWithFile:@"atlasGeral.png"];
[self addChild:self.batchNodeGeneral];
创建这个和我有另一个类创建主类CCLayers,即初始化,使用CCSpriteBatchNode之前,像这样:
-(id) init
{
if((self=[super init])) {
self.bg = [CCSprite spriteWithFile: @"cCircularBG.png"];
[self addChild:self.bg];
self.dr = [CCSprite spriteWithFile: @"cCircularDR.png"];
[self addChild:self.dr];
}
return self; // self is a CCLayer
}
可以这将使用主类中的self.batchNodeGeneral进行优化?我的想法是像[CCSprite spriteWithSpriteFrameName更换这两个精灵及其他:...
感谢
谢谢,但假设您的主类有一个名为self.batchNodeGeneral的属性,并且会返回该属性的方法,您将如何重写我在init部分发布的代码以使用该主类自身的纹理。 batchNodeGeneral属性? – SpaceDog
那么这对你来说更像是一个架构决定。你可以将你的主要对象变成像负责该批处理的游戏管理器一样,并使其成为单例,这对于特别是Cocos2D和iOS开发来说似乎是超流行的选择。或者您可以让其他游戏类在初始化时将主类作为参数,以便他们可以访问它。取决于你的想法以及你要做什么,像这样的建筑事物会变得非常虔诚。 – Suboptimus
好吧,但我的主要观点是这样的:在主类我有这一行[self addChild:self.batchNodeGeneral]; ...在一个类的init部分如何可以有另一个这些行添加相同的节点再次去那个班?听起来不对,如果我尝试它会崩溃。 – SpaceDog