Cocos 2 dxでのCCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO比較

2080 ワード


qinning 199オリジナル、転載を歓迎します.転載は明記してください:http://www.cocos2dx.net/?p=27
 
まず、CCCallFuncの継承関係を示す画像を見ます.
Cocos2dx 中的CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO比较
 
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));

	}