0

我对指针这件事有一个基本的误解。我想创建许多精灵,并且希望所有班级都知道它们。我所做的——它的奇迹是这样的:

我在 .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。

非常感谢 。

4

1 回答 1

1

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

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

在.h

NSNutableArray *_brokenBoxes;

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

米,

全球的

@synthesize brokenBoxes = _brokenBoxes;

在里面

_brokenBoxes = [[NSMutableArray array] retain];

释放

[_brokenBoxes release];

清理 :

[_brokenBoxes removeAllObjects];

一些F:

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

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

for (CCSprite *brokenBox in self.brokenBoxes) {
    // do your stuff.
}
于 2013-08-12T11:12:49.040 回答