我在cocos2d中有一个游戏,它有一个Mole Class和一个调用它的Layer。 Mole类称之为:
-(void)gotHit {
[self.parent processMoleHit];
}
而Layer已声明并实现此方法:
-(void) processMoleHit;
-(void) processMoleHit {
currentScore++;
[self setCurrentScore];
}
为什么cocos2d会给我警告:
未找到实例方法-processMoleHit(返回类型默认为id)。
这是parent的实现,层类:
//Interface
@interface Ch3_SavingDataPlist : SimpleTimedGameRecipe
{
NSMutableArray *moles;
int tagCount;
int moleCount;
CCSprite *mallet;
CGPoint malletPosition;
}
-(CCLayer*) runRecipe;
-(void) step;
-(void) initBackground;
-(void) createMoleAtPosition:(CGPoint)point withZ:(float)z;
-(void) processMoleHit;
-(void) addHiScoresToMenu;
-(void) loadHiScores;
-(void) addHiScore;
-(void) deleteHiScores;
-(void) startNewGame;
-(void) gameOver;
-(void) step:(ccTime)delta;
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end
答案 0 :(得分:1)
您缺少类型转换。通过以下方式替换您的代码:
-(void)gotHit {
[(YOUR_LAYER_CLASS)self.parent processMoleHit];
}
答案 1 :(得分:0)
我认为您错过了将类Mole包含在XCode中的目标成员资格中。
要检查它,请选择XCode左侧的Mole Class .m,并验证是否在XCode右侧的目标成员资格下选中了目标复选框。如果没有,它可能会导致这个问题。