cocos2d-x как приостановить действия и расписание слоя, а затем возобновить их

У меня есть сцена содержит много слоев (слой содержит много спрайтов), как я могу приостановить расписание и действия, но затем я могу возобновить их.

6

Решение

Используйте функции:

void CCNode::pauseSchedulerAndActions();
void CCNode::resumeSchedulerAndActions();

Если вы хотите, чтобы все дочерние элементы слоя сделали паузу, вам нужен цикл, чтобы сделать это.

CCArray* childs = this->getChildren();
CCObject* child;
CCARRAY_FOREACH(childs, child)
{
CCSprite *sprite = (CCSprite *)child;
child -> pauseSchedulerAndActions();
}

Если вы просто хотите, чтобы особый ребенок сделал паузу, просто используйте функцию getChildByTag чтобы получить ребенка и приостановить действие спрайта.

Надеюсь, это будет полезно 🙂

6

Другие решения

В 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);
}
4

Пауза:

pauseSchedulerAndActions ();

unscheduleAllSelectors ();

продолжить:

resumeSchedulerAndActions ();

scheduleUpdate ();

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector