函数回调工作

来源:互联网 发布:淘宝康健泰老人坐便椅 编辑:程序博客网 时间:2024/06/09 09:17

       CCCallFunc的回调函数是以CCNode和数据作为回调参数。‘N’的意思是“Node”,‘D’的意思是“Data”,数据可以是任何数据类型。CCCallFuncO是以CCObject作为回调函数的参数,‘O’就是“Object”的意思.

 

void ActionSequence2::onEnter(){    ActionsDemo::onEnter();    alignSpritesLeft(1);    m_grossini->setVisible(false);    CCFiniteTimeAction*  action = CCSequence::create(        CCPlace::create(ccp(200,200)),        CCShow::create(),        CCMoveBy::create(1, ccp(100,0)),        CCCallFunc::create(this, callfunc_selector(ActionSequence2::callback1)),        CCCallFuncN::create(this, callfuncN_selector(ActionSequence2::callback2)),        CCCallFuncND::create(this, callfuncND_selector(ActionSequence2::callback3), (void*)0xbebabeba),        NULL);    m_grossini->runAction(action);}void ActionSequence2::callback1(){    CCSize s = CCDirector::sharedDirector()->getWinSize();    CCLabelTTF *label = CCLabelTTF::create("callback 1 called", "Marker Felt", 16);    label->setPosition(ccp( s.width/4*1,s.height/2));    addChild(label);}void ActionSequence2::callback2(CCNode* sender){    CCSize s = CCDirector::sharedDirector()->getWinSize();    CCLabelTTF *label = CCLabelTTF::create("callback 2 called", "Marker Felt", 16);    label->setPosition(ccp( s.width/4*2,s.height/2));    addChild(label);}void ActionSequence2::callback3(CCNode* sender, void* data){    CCSize s = CCDirector::sharedDirector()->getWinSize();    CCLabelTTF *label = CCLabelTTF::create("callback 3 called", "Marker Felt", 16);    label->setPosition(ccp( s.width/4*3,s.height/2));    addChild(label);}

 

 


如果大家想在精灵做完某个动作后通知下你,然后执行其他动作操作,下面的代码可以参考:

/*创建一个精灵*/CCSprite *pSprite = CCSprite::create("sprite.png");pSpritr->setPosition(ccp(200,200));this->addChild(pSprite);/*移动动作,动作时间设为10S*/CCMoveTo *pMove = CCMoveTo::create(10.0f,ccp(200,500));/*回调对象,CCCallFunc也是一个动作,只不过这个动作是一个回调函数*/CCCallFunc *pcall =  CCCallFunc::create(this,callfunc_selector(HelloWorld::backHome));/*组合两个动作*/CCSequence *actions = CCSequence::create(pMove,pcall,NULL);/*执行动作*/pSprite->runAction(actions); void HelloWorld::backHome(){     CCLabelTTF *label = CCLabelTTF::create("I am home!","Arial",35);     label->setPosition(ccp(200,300));     this->addChild(label);}


 

0 0