创造许多精灵 - 错误的方式?

时间:2013-08-12 09:30:26

标签: objective-c cocos2d-iphone

我对指针有一个基本的误解。 我想创造许多精灵,我希望他们为所有班级所知。 我所做的 - 以及它的作用奇迹是:

我在.h文件中定义:CCSprite *brokenBox;,所以所有班级都可以看到他。 后来,我有一个创建他的人的功能,并为每个人添加一个身体。

-(void)someF
{

    brokenBox=[CCSprite spriteWithFile:@"brokenBox.png"];
    brokenBox.tag=5;
    brokenBox.position=ccp(point.x*relativeX, point.y );
    //now attach abody to him
    ....
    ....
    [self addChild:brokenBox];


}

现在这个函数被多次调用(这里有很多盒子)。 我不明白的是,单个指针如何能够一次又一次地改变它指向的文件,我怎么能一次又一次地将他作为一个孩子添加? 他创造了很多指针吗?

正确的工作方式是什么,所以我可以访问所有这些精灵? (现在要访问它们:[self getChildByTag:5];并且它们都具有相同的标记= 5.

非常感谢。

1 个答案:

答案 0 :(得分:1)

每次创建精灵时都会更改指针brokenBox。因此,在您创建了“多个”精灵之后,brokenBox指向您创建的最后一个精灵。

getChildByTag仅返回您在子列表中遇到的第一个带有您提供的标记的内容。你可能想要这样的东西:

in .h

NSNutableArray *_brokenBoxes;

@property (nonatomic,readonly) NSArray *brokenBoxes;
// remove your property for brokenBox, it would be invalid (see above)

in .m,

全球

@synthesize brokenBoxes = _brokenBoxes;

初​​始化

_brokenBoxes = [[NSMutableArray array] retain];

的dealloc

[_brokenBoxes release];

清理:

[_brokenBoxes removeAllObjects];

someF:

CCSprite *brokenBox=[CCSprite spriteWithFile:@"brokenBox.png"];
....
....
[brokenBoxes addObject:brokenBox];
[self addChild:brokenBox];

从其他类中,使用数组brokenBoxes访问您的精灵。

for (CCSprite *brokenBox in self.brokenBoxes) {
    // do your stuff.
}