如何在cocos2d中暂停一切特定的时间?

时间:2011-04-24 15:14:51

标签: iphone objective-c cocos2d-iphone

所以我有这段代码:

if (ball.position.x < 45) {
    ball.position = ccp(200, 200);
    score1 = score1 + 1;
    [label setString:[NSString stringWithFormat:@"Score %d - %d", score1, score2]];
}

在主init方法中我有:

[self schedule:@selector(move) interval:.01];

只是将球移动到屏幕周围。我想知道在将球移动到新位置和重新开始移动球之间我会暂停3秒钟。 (并且记录第一位代码在移动方法中)

2 个答案:

答案 0 :(得分:3)

你能发布简历运动方法吗?要停止球移动,您需要取消预定[self unschedule:@selector(move:)]您可以在延迟[self performSelector:@selector(resume) withObject:nil afterDelay:3.0f]之后运行简历移动方法,您也可以使用CCCallFunc执行此类延迟:

id moveCallFunc = [CCCallFunc ActionWithTarget:self selector:@selector(myMove)];
id resumeCallFunc = [CCCallFunc ActionWithTarget:self selector:@selector(resume)];
id tDelay = [CCDelayTime actionWithDuration:3.0f];

[self runAction:[CCSequence actions:moveCallFunc, tDelay, resumeCallFunc, nil]];

如果要像上面那样安排移动和恢复功能,可以包含调度方法,以便将它们用作选择器,如:

-(void)myMove {

   [self schedule:@selector(move:)];
}

希望这有帮助

答案 1 :(得分:0)

之后,如果陈述为真,您可以 [self unschedule:_cmd];然后[self schedule:@selector(newPos) interval:3];并在 newPos 方法中为球分配一个新位置。