[self classmethod]
然后使用它的子类
我正在制作一些基于cocos2d的iPhone游戏。
在我之前看过的很多游戏中,当用户的角色死亡或消失时,场景重新开始。
它可以简单地完成,但如果在每个子类中实现,则需要一些处理。
[[CCDirector sharedDirector] replacescene:[childclass scene]];
但是如果我可以在父类中实现,它可以一次完成。我猜。
所以我在父类中尝试[self scene]
,但它不起作用。
添加
@interface Parent : CCLayer {}
+(CCScene *)场景;
- (无效)死;
@end
@implementation Parent
...
+(CCScene *)场景{
CCScene *scene = [CCScene node];
// 'layer' is an autorelease object.
Parent *layer = [Parent node];
// add layer as a child to scene
[scene addChild: layer];
// return the scene
return scene;
}
...
- (void)dead {
//在人物死亡后被召唤
[[CCDirector sharedDirector] replacecescene:[self scene]]; //这会产生错误“家长可能无法回应'场景'”
}
@interface Child1:Parent {}
+(CCScene *)场景;
@end
@implementation Parent
...
+(CCScene *)场景{
CCScene *scene = [CCScene node];
// 'layer' is an autorelease object.
Child *layer = [Child node];
// add layer as a child to scene
[scene addChild: layer];
// return the scene
return scene;
}
...
@end
我认为Child1不需要死方法实现,因为它是Parent的子类 但它不起作用。还有Child2,Child3 ......也是。
当我将死方法移动到Child1并修改其自身时,它会起作用 - > Child1
如果你不明白我的问题,请告诉我。 谢谢你的回复。
答案 0 :(得分:1)
找到了我想要的解决方案。
- (void)dead {//如果你的角色死了,请调用此方法
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:2.0 scene:[self.class scene]]];
}
在dead方法中,self可以是从超类继承的子类。
ex)超类是Stage:CCLayer,子类是Stage1:当你的角色在Stage1,Stage2,Stage3中死亡时调用Stage dead方法......你不需要在那些类中实现每个死方法( Stage1,Stage2 ..)喜欢[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:2.0 scene:[StageX scene]]];