关于CCCallFunc、CCCallFuncN和CCCallFuncND的使用

cocos2d(x)中有3种action回调方式:CCCallFunc、CCCallFuncN和CCCallFuncND

 

看源代码的excute方法,我总结下面3点:

1. CCCallFunc

 CCCallFunc是执行对应的回调方法,其中回调方法不可带参数。

 

2. CCCallFuncN

  CCCallFuncN多带一个参数,而参数本身是动作Aciton本身。

 

3. CCCallFuncND

CCCallFuncND带2个参数,一个是动作Action本身,一个是你自己定义的回调函数的参数。


请看tests代码:

创建动作:

  1. CCCallFunc::actionWithTarget(this, callfunc_selector(ActionSequence2::callback1)),  
  2. CCCallFuncN::actionWithTarget(this, callfuncN_selector(ActionSequence2::callback2)),  
  3. CCCallFuncND::actionWithTarget(this, callfuncND_selector(ActionSequence2::callback3), (void*)0xbebabeba),  

回调函数:

  1. void ActionSequence2::callback1()  
  2. {  
  3.     CCSize s = CCDirector::sharedDirector()->getWinSize();  
  4.     CCLabelTTF *label = CCLabelTTF::labelWithString("callback 1 called""Marker Felt", 16);  
  5.     label->setPosition(CCPointMake( s.width/4*1,s.height/2));  
  6.   
  7.     addChild(label);  
  8. }  
  9.   
  10. void ActionSequence2::callback2(CCNode* sender)  
  11. {  
  12.     CCSize s = CCDirector::sharedDirector()->getWinSize();  
  13.     CCLabelTTF *label = CCLabelTTF::labelWithString("callback 2 called""Marker Felt", 16);  
  14.     label->setPosition(CCPointMake( s.width/4*2,s.height/2));  
  15.   
  16.     addChild(label);  
  17. }  
  18.   
  19. void ActionSequence2::callback3(CCNode* sender, void* data)  
  20. {  
  21.     CCSize s = CCDirector::sharedDirector()->getWinSize();  
  22.     CCLabelTTF *label = CCLabelTTF::labelWithString("callback 3 called""Marker Felt", 16);  
  23.     label->setPosition(CCPointMake( s.width/4*3,s.height/2));  
  24.   
  25.     addChild(label);  
  26. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值