6

私は現在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はグローバル変数であり、現在アニメーションを再生しているかどうかを知りたいです。

どうすればいいのですか。?
ありがとうございました。

4

2 に答える 2

14

アクションを実行するスプライトが

CCSprite* bear;

私はあなたが次のようなものを使うことができると思います

bear->numberOfRunningActions()

numberOfRunningActions( )符号なし整数を返すため、アクションがないかどうかを確認するには、それが返されるかどうかを確認する必要があります0

if ( bear -> numberOfRunningActions( ) == 0 ) {
   CCLOG( "No actions running." );
} else {
   CCLOG( "Actions running." );
} 
于 2012-09-25T23:14:00.420 に答える
1

bearAnimate (CCAnimate) には、それを確認するメソッドがあります。

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

メソッドは CCAction から継承されます。幸運を。

于 2012-09-26T08:52:16.853 に答える