0

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];

任何想法都会很棒,谢谢。

4

1 回答 1

1

从第一行开始:

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

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

- (id)getChildByTag:(NSInteger)tag;

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

在这种情况下,程序员知道标签为 0 的孩子是一个AtlasSpriteManager,所以他们简单地转换为该类型,然后spriteManager像往常一样使用 。

于 2011-08-04T19:39:53.300 回答