#cocos2d-x #scheduler #resume #pausing-execution
#cocos2d-x #планировщик #возобновить #приостановка-выполнение
Вопрос:
Я хочу приостановить CCNode на некоторое время и после этого возобновить его снова. когда я использую приведенный ниже код отдельно, они работают, но когда я хочу возобновить этот CCNode на определенное время, когда нажата кнопка, это не работает, и возникает ошибка утверждения (то есть: элемент-> приостановлено == bPaused ).
//for pausing
this->pauseSchedulerAndActions();
//for resuming
this->resumeSchedulerAndActions();
Я использую приведенные ниже коды:
#define TIME_FOR_RESUME 5.0f
//function that called when my button click
void myClass::myFunc(CCObject * pSender)
{
this->pauseSchedulerAndActions();
this->scheduleOnce(schedule_selector(myClass::myResumeFunction), TIME_FOR_RESUME);
}
void myClass::myResumeFunction(float dt)
{
this->resumeSchedulerAndActions();
}
Комментарии:
1. там написано: приостановить планировщик и действия …. Я сомневаюсь, что функция myResumeFunction будет вызвана. Что значит «приостановить CCNode»? возможно, это неправильный подход. Что находится в узле и т.д…
2. да, я вставляю точку останова в myResumeFunction, но она не вызывается, и перед этим утверждение завершилось ошибкой. Я имею в виду приостановку всего CCSprite и их планировщика, который, кажется, некоторое время не существует, а затем возобновить их все.
Ответ №1:
вы можете использовать это для приостановки
this->unscheduleAllSelectors();
и это для возобновления
this->scheduleUpdate();
Комментарии:
1. пауза: приостановить schedulerandactions(); отменить scheduleallselectors(); возобновить: возобновить schedulerandactions(); запланировать обновление();