Я не могу на всю жизнь разобраться, почему это происходит. У меня есть класс, полученный из CCLayer. Я запланировав вызов метода как и при инициализации классаСостояние таймера передается дважды, с использованием cocos2d scheduler
//create an update method for keeping track of how long its been since an animation has played
[self schedule:@selector(playIdleAnimation:)];
И метод
//an update method that will play an idle animation after a random period of idleness
-(void) playIdleAnimation:(ccTime) dt {
//if the user isn't playing an animation, increment the time since last animation variable
if ([bodySprite numberOfRunningActions] == 0) {
timeSinceLastAnimation += (float)dt;
//now check to see if we have surpassed the time set to cause an idle animation
if (timeSinceLastAnimation > (arc4random() %14) + 8) {
//reset the cooldown timer
timeSinceLastAnimation = 0;
[bodySprite stopAllActions];
//play the idle animation
//[bodySprite runAction:[CCAnimate actionWithAnimation:waitAnimation restoreOriginalFrame:NO]];
NSLog(@"PLAYING IDLE ANIMATION");
}
}
//player is currently playing animation so reset the time since last animation
else
timeSinceLastAnimation = 0;
}
Но все же, когда я иду, чтобы запустить программу заявление консоли показывает состояние передается в два раза каждый перезарядка
012-06-29 09: 52: 57,667 Test Game [5193: 707] ИГРА IDLE АНИМАЦИЯ
2012-06-29 09: 52: 57,701 Test Game [5193: 707] ИГРА IDLE АНИМАЦИЯ
2012-06-29 09: 53: 05,750 Test Game [5193: 707] ИГРА IDLE АНИМАЦИЯ
2012-06-29 09: 53: 05,851 Test Game [5193: 707] ИГРА IDLE АНИМАЦИЮ
Я пытаюсь исправить ошибку, в которой игра заканчивается, когда я заканчиваю игру бездействующей анимации, и я уверен, что это имеет какое-то отношение к ней.
Спасибо за помощь, но незапланирование не помогло. Мне удалось решить проблему, указав интервал расписания на каждые 0,5 секунды. Остается загадкой, почему его зовут дважды. Возможно, запланированные методы работают по потоку? – user819640