cocosbuilderでタイムラインを作成してアニメーションさせたとき、その終了時に処理を実行したい場合はCCBAnimationManagerDelegateを使います。
// GameLayer.h class GameLayer : public CCLayer , public CCBAnimationManagerDelegate // CCBAnimationManagerDelegateを継承 { public: // アニメーションマネージャーを準備 CCBAnimationManager* mAnimationManager; GameLayer(); virtual ~GameLayer(); CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(GameLayer,create); void setAnimationManager(CCBAnimationManager *pAnimationManager); // アニメーション終了時に呼ばれるメソッド virtual void completedAnimationSequenceNamed(const char *name); };
// GameLayer.cpp // アニメーション終了時の処理 void GameLayer::completedAnimationSequenceNamed(const char *name) { // タイムラインによって処理を分ける if(strcmp(name,"CountDown") == 0) { this->startGame(); } else if (strcmp(name, "GameOver") == 0) { this->goToScoreScene(); } } void GameLayer::setAnimationManager(CCBAnimationManager *pAnimationManager) { CC_SAFE_RELEASE_NULL(mAnimationManager); mAnimationManager = pAnimationManager; CC_SAFE_RETAIN(mAnimationManager); mAnimationManager->setDelegate(this); // デリゲートを設定する }