我正在尝试LHSprite
从 LevelHelper 扩展 a ,以便可以为不同的元素添加不同的行为。
好的,到目前为止一切都很好,但是你想要什么?
基本上想象一组具有不同动作的角色。我希望能够定义一个Character
扩展LHSprite
和定义move
方法的类。所有角色都应该扩展这个Character
类并定义自己的动作。通过这种方式,我可以将元素添加到地图中,并且可以以相同的方式处理它们(在移动方面)。
好的,我明白了,但是你做了什么?
到目前为止,我已经关注了这个关于自定义 LHSprites 的链接,但我遇到了一个问题:我的案例与那个案例的第一个区别是我不使用 LevelHelper 添加我的元素(至少是我试图扩展的那些)。我在代码中添加了我的元素,因为我希望这些元素的随机数量位于随机位置。
所以我制作了这个创建 cop 的 init 方法(即 extendsCharacter
和Character
extends LHSprite
)。这个方法实际上看起来更像是“添加到加载器”方法,但无论如何:
- (id) initInLoader:(LevelHelperLoader *) loader andNumber: (int) i
atPos: (CGPoint) pos{
self = (Cop *) [ loader createBatchSpriteWithName:@"cop_01"
fromSheet:@"copSheet" fromSHFile:@"enemies" ];
_uniqueName = [ NSString stringWithFormat:@"Cop_%d", i + 1 ];
[ self setUniqueName: _uniqueName];
[ self prepareAnimationNamed:@"cop" fromSHScene:@"enemies" ];
[ self setAnimationDelayPerUnit: 1.0f/70.0f ];
self.position = pos;
[ self playAnimation ];
}
到目前为止,一切都很好。我可以看到我的警察站着并且生气勃勃。但是,当我尝试调用 move 方法(或任何其他方法)时,它会给我一个无法识别的选择器崩溃。
我相信这个错误是由于演员阵容而发生的,(Cop *)
但我不知道如何超越这一点。