-1

我在 cocos2d 中有一个游戏,它有一个 Mole 类和调用它的层。鼹鼠类称之为:

-(void)gotHit {
    [self.parent processMoleHit];
}

而 Layer 声明并实现了这个方法:

-(void) processMoleHit;


-(void) processMoleHit {
    currentScore++;
    [self setCurrentScore];
}

为什么 cocos2d 会给我警告:

找不到实例方法 -processMoleHit(返回类型默认为 id)。

这里是父层类的实现:

//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
4

2 回答 2

1

您缺少类型转换。通过以下方式替换您的代码:

-(void)gotHit {
    [(YOUR_LAYER_CLASS)self.parent processMoleHit];
}
于 2013-06-18T17:30:51.937 回答
0

我认为您错过了将 Mole 类包含在 XCode 的目标成员资格中。

要检查它,请选择 XCode 左侧的 Mole Class .m 并验证是否已在 XCode 右侧的 Target Membership 部分下为您的目标选中该复选框。如果没有,它可能会导致该问题。

于 2013-06-18T16:52:43.780 回答