cocos2d-x ver.2.2.2でパラパラアニメを作っているのですが、複数のアニメーションを条件分岐させて動かしたいのです。
カウンターが(0~10)までは仮にAアニメーション、カウンターが(11~20)まではBアニメーションという具合です。
現在、一つ目のAアニメーションを動かすことと、カウンターで条件分岐させるところまではできてて、後は同じようにBアニメーションを追加すればOKなどと簡単に考えていたのですが・・・
runAction();でアニメーションをスタートできたので当然stopAction();でAアニメーションを止められると思ったのですが、
これができません。以下がここまでのコードです。
GameScene.cpp
//ボタンがタップされた時の処理
void GameScene::myCallback(CCObject* pSender)
{
if(count < 10)
{
count++;
CCLog("Count %03d", count);
/// Aアニメーションフレームの生成
CCAnimation* animation = CCAnimation::create();
for( int i=0; i<4; i++ )
{
char filename[128] = {0};
sprintf(filename,"xxx_0%d.png",i);
animation->addSpriteFrameWithFileName(filename);
}
/// アニメーションを切り替える速度を決める
animation->setDelayPerUnit( 0.3f );
/// 無限ループさせる(-1)
animation->setLoops(-1);
/// アニメーションの生成
CCAnimate* animate = CCAnimate::create(animation);
animate->setTag(1);
/// スプライトの生成
CCSprite* sprite = CCSprite::create();
/// レイヤーにスプライトを追加
this->addChild(sprite);
/// スプライト座標を設定する
//pSprite->setPosition(CCPointMake(0.0f,0.0f));
CCSize size = CCDirector::sharedDirector()->getWinSize();
sprite->setPosition( ccp(size.
width *0.5, size.height *0.5));
/// アニメーションを実行する
sprite->runAction(animate);
}
else if (count < 20){
count++;
CCLog("Count %03d", count);
//Aアニメーションを止める
sprite->stopActionByTag(1);
//ここにBアニメーションを入れる
}
else{
}
}
自分でネット上を色々と調べてみると「アニメーションにTagを設定しておくことで、別メソッドでもアニメーションの実行や停止を制御することが可能になります。」とあったのでTagをつけてelse ifの中でsprite->stopActionByTag(1);としてAアニメーションを止めようとしましたがエラー「Use of undeclared identifier 'sprite'」となります。
sprite->runAction(animate);ではエラーも出ずに上手く動いているのになぜ「spriteが宣言されていません」となるのでしょうか?
ネット上には同じメソッド内でアニメーションを制御する例はたくさんあるのですが、条件分岐をまたぐとダメなのでしょうか?このやり方の解決方法もしくは他に良い方法があれば教えてください。
よろしくお願いいたします。