本文共 4375 字,大约阅读时间需要 14 分钟。
cocos2d-x学习笔记08:动作1:立即动作
CCAction *action=.... node->runAction(action);
CCAction *sequneceAction = CCSequence::actions( getAnimate(),//获得死亡动画,自己实现的函数 CCCallFunc::actionWithTarget(this, callfunc_selector(Hero::deadDoneCallback)),//结束游戏用的回调 NULL); this->runAction( ); //回调函数的定义 void Hero::deadDoneCallback() { this->setIsVisible(false);//设置节点隐藏,让cocos2dx自身清理,而不是马上清理。 CCScene *scene=GameOverScene::scene(); CCDirector::sharedDirector()->replaceScene(CCTransitionFade::transitionWithDuration(1.2f,scene)); }
CCCallFunc::actionWithTarget(this, callfunc_selector(Hero::deadDoneCallback);
static CCCallFunc * actionWithTarget(SelectorProtocol* pSelectorTarget, SEL_CallFunc selector);
void CCCallFunc::execute() { if (m_pCallFunc) { (m_pSelectorTarget->*m_pCallFunc)(); } if (CCScriptEngineManager::sharedScriptEngineManager()->getScriptEngine()) { CCScriptEngineManager::sharedScriptEngineManager()->getScriptEngine()->executeCallFunc( m_scriptFuncName.c_str()); } }
CCCallFunc * CCCallFunc::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFunc selector); CCCallFuncN * CCCallFuncN::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFuncN selector); CCCallFuncND * CCCallFuncND::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFuncND selector, void* d); CCCallFuncO * CCCallFuncO::actionWithTarget(SelectorProtocol* pSelectorTarget,SEL_CallFuncO selector, CCObject* pObject)
typedef void (SelectorProtocol::*SEL_CallFunc)(); typedef void (SelectorProtocol::*SEL_CallFuncN)(CCNode*); typedef void (SelectorProtocol::*SEL_CallFuncND)(CCNode*, void*); typedef void (SelectorProtocol::*SEL_CallFuncO)(CCObject*);
void A::f1( ); void A::f2(CCNode *node);//接受一个节点,该节点是动作的执行节点 void A::f3(CCNode *node,void *param);//接受动作的执行节点,还有一个void参数 void A::f4(CCObject* obj);//接受一个CCObject对象指针
#define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR) #define callfuncN_selector(_SELECTOR) (SEL_CallFuncN)(&_SELECTOR) #define callfuncND_selector(_SELECTOR) (SEL_CallFuncND)(&_SELECTOR) #define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR)
CCAction *a1=CCCallFunc::actionWithTarget(this, callfunc_selector(A::f1)); this->runAction(a1); CCAction *a2=CCCallFuncN::actionWithTarget(this, callfuncN_selector(A::f2)); this->runAction(a2); int i; CCAction *a3=CCCallFuncND::actionWithTarget(this, callfuncND_selector(A::f3),(void*)&i); this->runAction(a3); CCObject *obj; CCAction *a4=CCCallFuncO::actionWithTarget(this, callfuncO_selector(A::f4),obj); this->runAction(a4);
转载地址:http://giosi.baihongyu.com/