Приостановить CCNode на некоторое время

#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(); запланировать обновление();