这条线意味着什么?

时间:2011-08-04 19:29:56

标签: iphone ios cocos2d-iphone atlassprites

我在开源项目的init方法中找到了这一行:

AtlasSpriteManager *spriteManager =
    (AtlasSpriteManager*)[self getChildByTag:kSpriteManager];

kSpriteManager = 0;

然后spriteManager用于此目的

     AtlasSprite *bird = [AtlasSprite spriteWithRect:
                         CGRectMake(608,16,44,32) spriteManager:spriteManager];
    [spriteManager addChild:bird z:4 tag:kBird];

任何想法都会非常感谢你。

1 个答案:

答案 0 :(得分:1)

从第一行开始:

AtlasSpriteManager *spriteManager = 
    (AtlasSpriteManager*)[self getChildByTag:kSpriteManager]; 

这意味着有一个名为-getChildByTag:的方法,它返回一个通用的子对象。由于返回的对象是通用的(没有特定类型),因此必须先将其强制转换为适当的类型才能使用它。我猜这个方法定义看起来像这样:

- (id)getChildByTag:(NSInteger)tag;

在内部,该类将包含一组通用子对象,并且可以通过使用适当的标记调用getChildByTag:来检索特定的子对象。

在这种情况下,程序员知道标记为0的孩子是AtlasSpriteManager,因此他们只是转换为该类型,然后像往常一样使用spriteManager