2012-12-18 2 views
6

फिर से शुरू करें मेरे पास एक दृश्य में कई परत हैं (परत में कई स्प्राइट हैं), मैं शेड्यूल और कार्रवाइयों को कैसे रोक सकता हूं, लेकिन फिर मैं उन्हें फिर से शुरू कर सकता हूं।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 का उपयोग करें।

आशा है कि यह उपयोगी होगा :)

+0

एन, धन्यवाद! लेकिन वहाँ कुछ स्प्राइट कार्रवाई चल रहे हैं, 'pauseSchedulerAndActions' का उपयोग इन स्प्राइट 'को रोक नहीं सकते कार्रवाई। –

0

ठहराव:

pauseSchedulerAndActions();

unscheduleAllSelectors();

फिर से शुरू:

resumeSchedulerAndActions();

शेड्यूलअपडेट();

4

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); 
} 
संबंधित मुद्दे