Callback Action

ActionÀÌ ½ÇÇà µÉ ¶§, ÄݹéÇÔ¼ö¸¦ ¸¸µé¾î ½ÇÇà ÇÒ ¼ö ÀÖ´Ù.

´ÙÀ½Àº ÄݹéÇÔ¼ö ¸®½ºÆ®ÀÌ´Ù.

1. CCCallFunc : ¸Å°³º¯¼ö°¡ ¾ø´Â ¸Þ¼­µå È£Ãâ
2. CCCallFuncN : CCNode¸¦ ¸Å°³º¯¼ö·Î ¸Þ¼­µå È£Ãâ
3. CCCallFuncND : CCNode¿Í µ¥ÀÌÅ͸¦ ¸Å°³º¯¼ö·Î ¸Þ¼­µå È£Ãâ
4. CCCallFuncO : ÁöÁ¤µÈ CCObject¸¦ ¸Å°³º¯¼ö·Î ¸Þ¼­µå È£Ãâ

 

1. CCCallFunc : ¸Å°³º¯¼ö°¡ ¾ø´Â ¸Þ¼­µå È£Ãâ

CCCallFunc
CCAction *act1 = CCMoveTo::create(1.0f, ccp(200, 200));
CCAction *act2 = CCCallFunc::create(this, callfunc_selector(HelloWorld::CCCallFunc));
CCAction *action = CCSequence::create((CCFiniteTimeAction *)act1, act2, NULL);
mWoman->runAction(action);

void HelloWorld::CCCallFunc()
{
    OutputDebugString(L"¾Ö´Ï¸ÞÀÌ¼Ç Á¾·á");
}

 

2. CCCallFuncN : CCNode¸¦ ¸Å°³º¯¼ö·Î ¸Þ¼­µå È£Ãâ

CCNode¸¦ ¸Å°³º¯¼ö·Î Àü´ÞÇÑ´Ù. ¿¹Á¦¿¡¼­´Â CCNode È®´ëÇÏ°í ÀÖ´Ù.
CCSpawnÀ¸·Î ½ÇÇàÇصµ ÄݹéÀº Çѹø¹Û¿¡ È£ÃâÀÌ ¾ÈµÈ´Ù.

CCCallFuncN
CCAction *act1 = CCMoveTo::create(1.0f, ccp(200, 200));
CCAction *act2 = CCCallFuncN::create(this, callfuncN_selector(HelloWorld::CallFuncN));
CCAction *action = CCSequence::create((CCFiniteTimeAction *)act1, act2, NULL);
mWoman->runAction(action);

void HelloWorld::CallFuncN(CCNode *node)
{
    node->setScale(2);
}

 

3. CCCallFuncND : CCNode¿Í µ¥ÀÌÅ͸¦ ¸Å°³º¯¼ö·Î ¸Þ¼­µå È£Ãâ

CCCallFuncND
CCAction *act1 = CCMoveTo::create(2, ccp(200, 200));
static float scale = 3;
CCAction *act2 = CCCallFuncND::create(this, callfuncND_selector(HelloWorld::CallFuncND), (void*)&scale);
CCAction *action = CCSequence::create( (CCFiniteTimeAction *)act1, act2, NULL);
mWoman->runAction(action);

void HelloWorld::CallFuncND(CCNode *node, void *n)
{
    node->setScale(*(float*)n);
}

4. CCCallFuncO : ÁöÁ¤µÈ CCObject¸¦ ¸Å°³º¯¼ö·Î ¸Þ¼­µå È£Ãâ

CCCallFuncO
CCAction *act1 = CCMoveTo::create(2, ccp(200, 200));
CCAction *act2 = CCCallFuncO::create(this, callfuncO_selector(HelloWorld::CallFuncO), mWoman);
CCAction *action = CCSequence::create( (CCFiniteTimeAction *)act1, act2, NULL);
mWoman->runAction(action);

void HelloWorld::CallFuncO(cocos2d::CCObject *pSender)
{
    ((CCNode*)pSender)->setScale(3);
}