关于回调函数(带参数的回调函数)

class PropLayer : public CCLayer
{
public:
	PropLayer(void);
	virtual ~PropLayer(void);
	virtual void Init(UIButton* _PropButton, int _iPropNum)=0;

	void TouchEvent(CCObject *pSender, TouchEventType type);

	CCObject* m_objListener;//对象
	SEL_CallFuncO m_funSelector;//函数
	void SetPropCallback(CCObject* obj,SEL_CallFuncO callfunc);//按下道具的回调(用于状态机的修改)

protected:
	UIButton *	m_PropButton;//道具按钮
	int			m_iPropNum;//道具数量
};
void PropLayer::TouchEvent( CCObject *pSender, TouchEventType type )
{
	switch (type)
	{
	case TOUCH_EVENT_BEGAN://按下
		if(m_objListener && m_funSelector)
		{
			CCString* str=CCString::createWithFormat("%d",1321);
			(m_objListener->*m_funSelector)(str);
		}
		CCLOG(CCString::createWithFormat("Touch Down")->getCString());
		break;

	case TOUCH_EVENT_MOVED://移动
		CCLOG(CCString::createWithFormat("Touch Move")->getCString());
		break;

	case TOUCH_EVENT_ENDED://抬起
		CCLOG(CCString::createWithFormat("Touch Up")->getCString());
		break;

	case TOUCH_EVENT_CANCELED://取消
		CCLOG(CCString::createWithFormat("Touch Cancelled")->getCString());
		break;

	default:
		break;
	}
}

void PropLayer::SetPropCallback( CCObject* obj,SEL_CallFuncO callfunc )
{
	m_objListener = obj;
	m_funSelector = callfunc;
}

m_RocketLayer = new RocketLayer;
	m_RocketLayer->Init(btRocket,1);
	m_RocketLayer->SetPropCallback(this,callfuncO_selector(LayerStage::PropLayerCallback));

void LayerStage::PropLayerCallback( CCObject * obj )
{
	CCString* str=(CCString*)obj;
	int value = str->intValue();
}


以上是带参数的回调方法,不带参数的回调如下:

SEL_CallFunc   m_funSelector;//函数指针

void SetRunGameCallback(CCObject* obj,SEL_CallFunc callfunc);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值