Вы не должны использовать NSTimers в cocos2d. Это вызовет проблемы, если вы хотите иметь возможность приостановить игру.
Если вы хотите скопировать какое-то действие с фиксированной задержкой между итерациями, вы можете свободно использовать scedule: interval: метод с необходимой задержкой.
[self schedule:@selector(methodToScedule) interval:yourDelay]
Если вам нужно сделать произвольную задержку, вы можете использовать последовательности действий cocos2d. Например,
- (void) sceduleMethod
{
// do anything you want
ccTime randomDuration = // make your random duration
id delayAction = [CCDelayTime actionWithDuration: randomDuration];
id callbackAction = [CCCallFunc actionWithTarget:self selector:@selector(scheduleMethod)];
id sequence = [CCSequenece actionOne: delayAction actionTwo: callbackAction];
[self runAction: sequence];
}
В этом случае вы должны вызвать свой метод только один раз. Затем он будет называть себя с заданной задержкой.
Надеюсь, вы не будете делать эту задержку в основном потоке (UI), иначе ваши пользователи заметят это и не будут рады вам. –
Я не уверен, но, возможно, 'sleep()' может быть полезен здесь. – SmartTree