[self classmethod]
в суперклассе, а затем использовать его в дочернем классе. Я делаю игру для iPhone на основе cocos2d. Во многих играх, которые я видел раньше, сцена перезапускается, когда персонаж пользователя умирает или уходит. Это можно сделать просто, но требуется некоторая обработка, если она реализована в каждом дочернем классе.
[[CCDirector sharedDirector] replacescene:[childclass scene]];
Но если бы я мог реализовать в родительском классе, это можно было бы сделать один раз. Наверное. Я попробовал [self scene]
в родительском классе, но это не сработало.
Как я могу сделать это в родительском классе?
добавлен в
@interface Parent : CCLayer {}
+ (CCScene *) сцена;
- (недействительно) мертвый;
@конец
@implementation Родитель
...
+ (CCScene *) scene {
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;
}
...
- (недействительно) мертвый {
// вызывается после смерти персонажа
[[CCDirector sharedDirector] replacescene: [собственная сцена]]; // Это вызывает ошибку «Родитель может не отвечать на 'сцену'»
}
@interface Child1: Parent {}
+ (CCScene *) сцена;
@конец
@implementation Родитель
...
+ (CCScene *) scene {
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;
}
...
@конец
Я думаю, что Child1 не нуждается в реализации мертвого метода, потому что это дочерний класс Parent, но он не работает. И Child2, Child3 ... тоже.
Он работает, когда я перемещаю мертвый метод в Child1 и изменяю его self -> Child1
Пожалуйста, дайте мне знать, если вы не можете понять мой вопрос. спасибо за ответ.