У меня есть сцена содержит много слоев (слой содержит много спрайтов), как я могу приостановить расписание и действия, но затем я могу возобновить их.
Используйте функции:
void CCNode::pauseSchedulerAndActions();
void CCNode::resumeSchedulerAndActions();
Если вы хотите, чтобы все дочерние элементы слоя сделали паузу, вам нужен цикл, чтобы сделать это.
CCArray* childs = this->getChildren();
CCObject* child;
CCARRAY_FOREACH(childs, child)
{
CCSprite *sprite = (CCSprite *)child;
child -> pauseSchedulerAndActions();
}
Если вы просто хотите, чтобы особый ребенок сделал паузу, просто используйте функцию getChildByTag
чтобы получить ребенка и приостановить действие спрайта.
Надеюсь, это будет полезно 🙂
В cocos2dx 3.2 для приостановки действий добавьте
Director::getInstance()->pause();
в режиме паузы обратный вызов.
а также Director::getInstance()->resume();
возобновить.
Для приостановки физики тела в бурундуке добавить,
for (auto nod :this->getChildren()) {
nod->getPhysicsBody()->setResting(true);
}
а также
for (auto nod :this->getChildren()) {
nod->getPhysicsBody()->setResting(false);
}
Пауза:
pauseSchedulerAndActions ();
unscheduleAllSelectors ();
продолжить:
resumeSchedulerAndActions ();
scheduleUpdate ();