2011-06-06 48 views
1

调度方法时出现错误。 (显示你有多少明星获得根据你的分数,我有addStar0 addStar1 addStar2 addStar3方法。)cocos2d计划选择器错误

[self schedule:@selector(addStar0) interval:0.2f]; 

和方法是:

-(void) addstar0 { 
    [self unschedule:_cmd]; 

    if (star > starProgress) { 
     starProgress++; 
     [self schedule:@selector(addStar1) interval:0.5f]; 
    } 
    else { 
     [self schedule:@selector(displayResult) interval:0.5f]; 
    } 

} 

错误消息:

Signature not found for selector - does it have the following form? -(void) name: (ccTime) dt 

我试着将我的所有方法改为addStar1:(ccTime)增量和时间表:@selector(addStar :)间隔:0.2f,但仍然相同。 (实际上我已经使用了两种方式来安排(有/无参数),并且它们在我上一个项目中运行良好。)

另外,有一件奇怪的事情:有时候我不能使用[self schedule:something ],但[CCScheduler sharedScheduler] schedule:something] works fine。我猜这可能是项目设置左右?

请用代码回答。谢谢。

回答

3

您正在使用 'addStar0' 的选择后

[self schedule:@selector(addStar0) interval:0.2f]; 

然后

-(void) addstar0 { 

应该

-(void) addStar0 { 
+0

!!!你是对的!不能相信我得到这样一个无意义的错误信息,而不是像'不完整的实现'或' addstar未找到'... – OMGPOP 2011-06-06 04:04:20

+0

好拿起Kazuki – pchap10k 2011-06-08 23:52:22

0

我认为你的错误实际上是对[self unschedule:_cmd];

哪里_cmd定义?尝试注释该行并再次运行它。

+2

'_cmd'是特殊的隐藏变量传递给每个方法。它是当前方法的选择器。 – 2011-06-06 03:36:03

+0

当然,我的日程安排:@selector(addStar0)并在addStar0本身内部调度它。 – OMGPOP 2011-06-06 03:37:24

+0

dunno where _cmd defined,但它是当前方法的选择器。 – OMGPOP 2011-06-06 03:38:15

0

[self unschedule:_cmd]; else语句