CCMoveToやCCCallFuncN等を利用する事ができます。
今回のサンプルでは、CCScaleとCCJumpTo、CCCallFuncNを使った動きを試してみましょう。
画面をタッチするとジャンプしながら5秒かけてスケールを大きくして、
処理が終わると画像を消すという流れになっています。

移動完了後の処理を定義してます
class HelloWorld : public cocos2d::CCLayer {
public:
~HelloWorld();
HelloWorld();
// returns a Scene that contains the HelloWorld as the only child
static cocos2d::CCScene* scene();
void initPhysics();
virtual void draw();
virtual void ccTouchesEnded(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
void update(float dt);
private:
b2World* world;
LevelHelperLoader* lh;
void moveDone(LHSprite* spr);
};
void HelloWorld::ccTouchesEnded(CCSet* touches, CCEvent* event)
{
CCSize s = CCDirector::sharedDirector()->getWinSize();
//Add a new body/atlas sprite at the touched location
CCSetIterator it;
CCTouch* touch;
for( it = touches->begin(); it != touches->end(); it++)
{
touch = (CCTouch*)(*it);
if(!touch)
break;
CCPoint location = touch->getLocationInView();
location = CCDirector::sharedDirector()->convertToGL(location);
// LevelHelper中のlionを取得
LHSprite* spr = lh->spriteWithUniqueName("lion");
spr->setScale(0.1);
spr->setPosition(ccp(s.width/2, s.height*0.7));
// 5秒かけてスケールを1にする
CCScaleTo* scale = CCScaleTo::create(5, 1);
// 5秒かけて指定座標に50の高さで5回ジャンプする
CCJumpTo* jump = CCJumpTo::create(5, ccp(s.width/2, s.height/2), 50, 5);
// スケールとジャンプを同時に実行
CCFiniteTimeAction* spwn = CCSpawn::create(scale, jump, NULL);
// moveDoneを実行する
CCCallFuncN* done = CCCallFuncN::create(this, callfuncN_selector(HelloWorld::moveDone));
// アクションが終了したら画像を消す
spr->runAction(CCSequence::create(spwn, done, NULL));
}
}
////////////////////////////////////////////////////////////////////////////////
void HelloWorld::moveDone(LHSprite *spr)
{
// 移動完了後にスプライトを削除する
spr->removeSelf();
}
スポンサーサイト