我在开源项目的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];
任何想法都会非常感谢你。
答案 0 :(得分:1)
从第一行开始:
AtlasSpriteManager *spriteManager =
(AtlasSpriteManager*)[self getChildByTag:kSpriteManager];
这意味着有一个名为-getChildByTag:
的方法,它返回一个通用的子对象。由于返回的对象是通用的(没有特定类型),因此必须先将其强制转换为适当的类型才能使用它。我猜这个方法定义看起来像这样:
- (id)getChildByTag:(NSInteger)tag;
在内部,该类将包含一组通用子对象,并且可以通过使用适当的标记调用getChildByTag:
来检索特定的子对象。
在这种情况下,程序员知道标记为0的孩子是AtlasSpriteManager
,因此他们只是转换为该类型,然后像往常一样使用spriteManager
。