2012-09-25 12 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

は、アクションを実行するスプライトは、私はあなたが

bear->numberOfRunningActions() 

numberOfRunningActions()のようなものは、あなたが希望、何もアクションがない場合はそう確認するために、符号なし整数を返します使用することができると思う

CCSprite* bear; 

であると仮定します返すかどうかを確認する必要があります。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から継承されています。がんばろう。

関連する問題