I have a scene contains many layer(the layer contains many sprite), how can I pause the schedule and actions , but then I can resume them.
cocos2d-x how to pause a layer's actions and schedule, and then resume them
Asked Answered
Use functions:
void CCNode::pauseSchedulerAndActions();
void CCNode::resumeSchedulerAndActions();
If you want all the layer's children to pause, you need a loop to do do this.
CCArray* childs = this->getChildren();
CCObject* child;
CCARRAY_FOREACH(childs, child)
{
CCSprite *sprite = (CCSprite *)child;
child -> pauseSchedulerAndActions();
}
If you just want a special child to pause;Just use function getChildByTag
to get the child and pause the sprite's action.
Hope it will be helpful :)
en, thanks!But there some sprites are running action, use the 'pauseSchedulerAndActions' cannot pause these sprites'action. –
Cichocki
Doesnt work for v4 as these have been removed. https://mcmap.net/q/1669540/-cocos2d-x-how-to-pause-a-layer-39-s-actions-and-schedule-and-then-resume-them worked for me –
Samurai
In cocos2dx 3.2 For pausing actions,add
Director::getInstance()->pause();
in pause button callback.
and Director::getInstance()->resume();
to resume.
For pausing physics of a body in Chipmunk add,
for (auto nod :this->getChildren()) {
nod->getPhysicsBody()->setResting(true);
}
and
for (auto nod :this->getChildren()) {
nod->getPhysicsBody()->setResting(false);
}
pause:
pauseSchedulerAndActions();
unscheduleAllSelectors();
resume:
resumeSchedulerAndActions();
scheduleUpdate();
© 2022 - 2024 — McMap. All rights reserved.