我对指针有一个基本的误解。 我想创造许多精灵,我希望他们为所有班级所知。 我所做的 - 以及它的作用奇迹是:
我在.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.
非常感谢。
答案 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.
}