Cocos 2 dxでのCCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO比較
2080 ワード
qinning 199オリジナル、転載を歓迎します.転載は明記してください:http://www.cocos2dx.net/?p=27
まず、CCCallFuncの継承関係を示す画像を見ます.
1、CCCallFunc、コールバック、パラメータなしの関数を呼び出す:
CCSequence::actions(CCCallFunc::actionWithTarget(this, callfunc_selector(ExtendActionLayer::onCallBack1)));
void ExtendActionLayer::onCallBack1()
{
flight->runAction(CCTintBy::actionWithDuration(0.5f, 255, 0, 255));
}
2、CCCallFuncO、コールバック、OはCCObjectを表し、CCCallFuncoはCCObjectパラメータの関数を持つことができる
CCSequence::actions(CCCallFuncO::actionWithTarget(this, callfuncO_selector(ExtendActionLayer::onCallBack2), CCInteger::create(2));
void ExtendActionLayer::onCallBack2(CCObject* data)
{
CCInteger* num = dynamic_cast<CCInteger*>(data);
pSender->runAction(CCTintBy::actionWithDuration(num->getValue(), 255, 0, 255));
}
3、CCCallFuncN、コールバック、NはCCNodeを表し、Node*タイプを伝えることができることを表す
CCSequence::actions(CCCallFuncN::actionWithTarget(this, callfuncN_selector(ExtendActionLayer::onCallBack3)));
void ExtendActionLayer::onCallBack3(CCNode* pSender)
{
// ,pSender flight, actionF
pSender->runAction(CCTintBy::actionWithDuration(1.0f, 255, 0, 255));
}
4、CCCallFuncND、コールバック、NDはCCNodeとDataを表し、オブジェクト自体と1つのvoid*タイプのパラメータを渡すことができ、void*は任意のタイプのパラメータであることを表す.
CCSequence::actions(CCCallFuncND::actionWithTarget(this, callfuncND_selector(ExtendActionLayer::onCallBack4), (void *)2));
void ExtendActionLayer::onCallBack4(CCNode* pSender, void* pData)
{
pSender->runAction(CCTintBy::actionWithDuration(static_cast<float>((int)pData), 255, 0, 255));
}