2012-09-25 56 views
6

運行目前我正在學習cocos2D上-X和我做一些精靈動畫。
我的目標是,當一個按鈕被點擊時,對象會移動到一些動畫的左邊。 現在,如果您快速點擊多次,動畫會立即發生,並且它看起來像熊希望而不是步行。檢查動畫在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); 

這裏bearAnimate是一個全局變量,我想知道它是否正在播放動畫。

如何做呢?
謝謝。

回答

13

假設運行操作的雪碧是

CCSprite* bear; 

我想你可以使用類似

bear->numberOfRunningActions() 

numberOfRunningActions()返回一個無符號整數,所以要檢查是否有任何行動,你會必須檢查它是否返回0

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

@LanceGray:謝謝你,夥計! –

+0

你知道它是如何在常規的cocos2d? – RollRoll

+1

@ThePoet我覺得功能是一樣的嗎? –

1

bearAnimate(CCAnimate)有一個方法來檢查。

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

該方法從CCAction繼承。祝你好運。