2012-09-25 11 views
6

Attualmente sto imparando cocos2D-x e sto facendo qualche animazione sprite.
Il mio obiettivo è che quando si fa clic su un pulsante, l'oggetto si sposta a sinistra con alcune animazioni. Ora, se fai clic più volte rapidamente, l'animazione si svolge immediatamente e sembra che l'orso speri invece di camminare.Verifica se l'animazione è in esecuzione in cocos2d-x

La soluzione a esso sembra semplice che dovrei controllare se l'animazione è già in esecuzione e se l'esecuzione della nuova animazione non dovrebbe avvenire.

Quanto segue è una parte del mio codice.

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); 

Qui bearAnimate è una variabile globale e desidero sapere se in riproduzione dell'animazione.

Come si fa?
Grazie.

risposta

13

Assumere lo Sprite che esegue l'azione è

CCSprite* bear; 

penso che si può usare qualcosa di simile

bear->numberOfRunningActions() 

numberOfRunningActions() restituisce un numero intero senza segno, in modo da verificare se ci sono azioni, si farebbe controllare se restituisce 0

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

@LanceGray: Grazie amico! –

+0

Sapresti come è normale in cocos2d? – RollRoll

+1

@ThePoet Penso che la funzione sia la stessa? –

1

The bearAnimate (CCAnimate) ha un metodo per controllarlo.

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

Il metodo è ereditato da CCAction. In bocca al lupo.

Problemi correlati