• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

chchpd

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

cocos2dx --- Action介绍 (二)

  有时需要指定在某一个时刻有谁执行某个动作,此时就有必要使用CCActionInstant继承树中一类特殊的类,即CCCallFunc家族。

  CCCallFunc家族主要有四个类:     

1 CCCallFunc *CCCallFunc::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFunc selector); 
2 CCCallFuncN *CCCallFuncN::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFuncN selector); 
3 CCCallFuncND *CCCallFuncND::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFuncND selector, void* d);
4 CCCallFuncO *CCCallFuncO::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFuncO selector, CCObject* pObject) 

  这四个类对应了四个不同的函数接口;

1 typedef void (SelectorProtocol::*SEL_CallFunc)(); 
2 typedef void (SelectorProtocol::*SEL_CallFuncN)(CCNode*); 
3 typedef void (SelectorProtocol::*SEL_CallFuncND)(CCNode*, void*); 
4 typedef void (SelectorProtocol::*SEL_CallFuncO)(CCObject*); 

  在使用此四类时,需要按需求使用上述4种回调函数的定义形式,并且对自定义的回调函数需用利用cocos2dx的宏一转换为函数指针类型,对应的宏定义:

1 #define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR) 
2 #define callfuncN_selector(_SELECTOR) (SEL_CallFuncN)(&_SELECTOR) 
3 #define callfuncND_selector(_SELECTOR) (SEL_CallFuncND)(&_SELECTOR) 
4 #define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR) 

  使用举例:

1 CCCurveMove* curveMove = CCCurveMove::create(fromtime,ccp(size.width - iRandPos_f, -size.height*0.5),sign*size.width*0.4,0.006);
2 CCCallFuncN *actDone = CCCallFuncN::actionWithTarget(this, callfuncN_selector(LeavesLayer::resetLeafPos));
3 CCFiniteTimeAction *putdown = CCSequence::actions(curveMove,actDone, NULL);
4 sprite->runAction(putdown);

 

posted on 2013-05-15 16:30  chchpd  阅读(319)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3