cocos2d之回调动作、CCSpeed和CCFollow

 

CCSize s = CCDirector::sharedDirector()->getWinSize();
 CCSprite *sp = CCSprite::create("CloseSelected.png");
 sp->setPosition(ccp(s.width/2,s.height/2));
 addChild(sp);

 

1、执行回调函数

CCMoveTo *move = CCMoveTo::create(2,ccp(s.width,s.height));
 CCActionInstant *func = CCCallFunc::create(this,callfunc_selector(MyScene::funcCallback)); //要回调的函数,函数形式为void funcCallback();
 sp->runAction(CCSequence::create(move,func,NULL));

2、可获取动作主体的回调函数

CCMoveTo *move = CCMoveTo::create(2,ccp(s.width,s.height));
 CCActionInstant *func = CCCallFuncN::create(this,callfuncN_selector(MyScene::funcNCallback));//回调函数的形式void funcNCallback(CCNode *pSender);
 sp->runAction(CCSequence::create(move,func,NULL));

 

void MyScene::funcNCallback(CCNode *pSender)
{
 CCSprite *sp = (CCSprite *)pSender;  //获取精灵对象
}

3、可同时传输数据的回调函数

CCMoveTo *move = CCMoveTo::create(2,ccp(s.width,s.height));
 CCActionInstant *func = CCCallFuncND::create(this,callfuncND_selector(MyScene::funcNDCallback),(void*)10); //要回调的函数void funcNDCallback(CCNode *pSender,void* Data);
 sp->runAction(CCSequence::create(move,func,NULL));

void MyScene::funcNDCallback(CCNode *pSender,void* Data)
{
 CCSprite *sp = (CCSprite *)pSender;
 int a = (int)Data;  //获取数据
}

 

4、//可传入对象CCCallFuncO

 

5、提速

CCMoveTo *move = CCMoveTo::create(2,ccp(s.width,s.height));
 CCSpeed *speed = CCSpeed::create(move,2);//参数1:提速前的动作,参数2:提速的倍数,这里是提高两倍
 sp->runAction(speed);

 

6、跟随

CCMoveTo *move = CCMoveTo::create(2,ccp(s.width,s.height));
 CCFollow *follow = CCFollow::create(sp, CCRectZero); //sp是被跟随者,CCRectZero跟随的区域范围,超过就不能跟
 sp->runAction(move);
 this->runAction(follow);//this是跟随者,这里是场景

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值