2012-09-25 13 views
6

में चल रहा है, मैं वर्तमान में कोकोस 2 डी-एक्स सीख रहा हूं और कुछ स्प्राइट एनीमेशन कर रहा हूं।
मेरा उद्देश्य यह है कि जब कोई बटन क्लिक किया जाता है तो ऑब्जेक्ट कुछ एनीमेशन के साथ छोड़ा जाता है। अब यदि आप तेजी से कई बार क्लिक करते हैं तो एनीमेशन तुरंत होता है और ऐसा लगता है कि भालू चलने की बजाए उम्मीद कर रहा है।जांचें कि एनीमेशन cocos2d-x

इसका समाधान सरल दिखता है कि मुझे यह जांचना चाहिए कि एनीमेशन पहले से चल रहा है या नहीं और नई एनीमेशन चलाने पर नहीं होना चाहिए।

निम्नलिखित मेरे कोड का एक हिस्सा है।

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("AnimBear.plist"); 
CCSpriteBatchNode* spriteBatchNode = CCSpriteBatchNode::create("AnimBear.png", 8); 

this->addChild(spriteBatchNode,10); 
     CCArray *tempArray = new CCArray(); 
char buffer[15]; 
for (int i = 1; i <= 8 ; i++) 
    { 
sprintf(buffer,"bear%i.png", i); 
tempArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(buffer));  
} 

CCAnimation *bearWalkingAnimation = CCAnimation::create(tempArray,0.1f); 
startAnimation = CCSprite::createWithSpriteFrameName("bear1.png"); 
startAnimation->setPosition(ccp (350 , CCDirector::sharedDirector()->getWinSize().height/2 -100)); 
startAnimation->setScale(0.5f); 

startAnimation->setTag(5); 

//Animation for bear walking  

bearAnimate = CCAnimate::create(bearWalkingAnimation); 

यहां भालूएनिमेट एक वैश्विक चर है और मैं जानना चाहता हूं कि यह वर्तमान में एनीमेशन खेल रहा है या नहीं।

मैं इसे कैसे कर सकता हूं?
धन्यवाद।

उत्तर

13

मान लें स्प्राइट कि कार्रवाई चलाता

CCSprite* bear; 

है मुझे लगता है कि आप की तरह

bear->numberOfRunningActions() 

numberOfRunningActions() रिटर्न एक अहस्ताक्षरित पूर्णांक कुछ का उपयोग कर सकते, अगर वहाँ कोई कार्रवाई कर रहे हैं तो जाँच करने के लिए, क्या तुम करोगी यह जांचना है कि क्या यह 0

if (bear -> numberOfRunningActions() == 0) { 
    CCLOG("No actions running."); 
} else { 
    CCLOG("Actions running."); 
} 
+0

@ लांसग्रे: धन्यवाद दोस्त! –

+0

क्या आप जानते हैं कि यह नियमित cocos2d में कैसा है? – RollRoll

+1

@ThePoet मुझे लगता है कि समारोह एक जैसा है? –

1

BearAnimate (CCAnimate) की जांच करने के लिए एक तरीका है।

if (bearAnimate.isDone()) 
    doWhatYouWant(); 

विधि सीसीएक्शन से विरासत में मिली है। सौभाग्य।

संबंधित मुद्दे