Я хочу запланировать интервал @selector (count): 1.0f для подсчета оставшегося времени.
вот мой код: (в файле GameManager.m)
-(void) count {
duration++;
[[[GameScene sharedScene] gadgetLayer] updateTimerLabel];
if (timeLimit - duration <= 5 && ticking == NO) {
ticking = YES;
[self schedule:@selector(untick) interval:5];
[[SimpleAudioEngine sharedEngine] playEffect:@"tick.caf"];
}
if (duration >= timeLimit) {
[self lose];
}
}
gadgetLayer - это место, где я помещаю вещи timerLayer и ScoreLayer.
счет не запланирован в GameManager.m, вместо этого я поместил его в свой файл GameScene.m:
-(void) onEnter {
[[GameManager sharedManager] schedule:@selector(count) interval:1.0];
[super onEnter
}
- (void)onExit {
[[GameManager sharedManager] unschedule:@selector(count)];
[super onExit];
}
Но метка таймера не изменится. Метод подсчета находится в файле GameManager.m, должен ли он быть внутри файла GameScene.m? Что-то не так с этим?
+(GameManager*) sharedManager {
if (instanceOfGameManager == nil) {
return [[GameManager alloc] init];
}
else return instanceOfGameManager;
}
-(id) init {
if ((self = [super init])) {
instanceOfGameManager = self;
[self scheduleUpdate];
}
return self;
}`
-(void) update: (ccTime) delta {
int a = 2;
}
`
Я установил точку останова в строке 'int a = 2', но не может быть достигнут.
[GameManager sharedManager] вызывается в методе appDidFinishLaunching, поэтому, я думаю, он не будет распределяться и инициализироваться снова.