Cocos2d-x学习之---自定义图标(带触摸事件)

可能说自定义图标有点不太合适吧,但是我不好怎么形容这个。这个东西是这两天在看别人的代码中了解到的,主要的意思是指,游戏中某个图标,其本身带有触摸功能:即这个类继承了CCSprite和CCTouchDelegate。这样在游戏开发过程中,将这个类的对象(某个图标)放到某个场景中,当用户进行触摸操作的时候,图标能响应触摸操作,这样就能方便的在场景有多个图标的时候对触摸事件进行合理的管理。嗯,说的有点模糊,本身不是计算机专业出身,专业术语描述性不强。

大概的利用一个简单的例子来说说吧~

首先

//图标代理
class ItemDelegate{
virtual bool ItemTouchBegan(CCPoint pTouche,CCEvent pEvent);
//还可以加上touchMove touchEnd touchCancel
}
//自定义图标.h
class Item: public CCSprite,public CCTouchDelegate{
virtual bool ccTouchBegan(CCTouch* pTouch,CCEvent* pEvent);
//move end cancel
ItemDelegate* itemDelegate;
}
//.cpp
bool Item::ccTouchBegan(CCTouch* pTouch,CCEvent* pEvent){
//在这里调用代理
itemDelegate->ItemTouchBegan(pTouch,pEvent);
}
在这里写自定义图标的类代码,再写一个代理,图标的触摸事件会调用代理执行,即如代码中所示,Item的触摸事件中调用代理的方法,可以这样说么:这样就给图标绑定了一种属性?


然后

//一个场景类.h
class someScene: public ItemDelegate{
//继承自代理,因而有代理的方法
//在这里将自定义的图标类对象作为这个场景的成员
//如果要实现触摸这个图标然后响应某个操作,就重写代理中的相关方法
virtual bool ItemTouchBegan(CCTouch* pTouch,CCEvent* pEvent);
Item* item;
}
//.cpp
bool ItemTouchBegan(CCTouch* pTouch,CCEvent* pEvent){
//在这里写当图标开始被触摸的响应操作
CCLog("touchBegan");
}


这样写估计也就我才看得懂了,留着给自己备用吧~因为学C++都没学多久,又不是计算机专业出身的,所以有些东西别人看起来挺简单的,而我却觉得挺有意思,就如这个代理,在C++中,抄段百度的:代理就是定义一个行为和某类(class)的对象相似,而又潜在地表示了所有继承自该类的对象的东西,我们把这种类的对象叫做代理(surrogate).该方法的关键之处在于“用类来表示概念”。通过使用这种方法,既能使我们避免显示地处理内存分配,又能保持类在运行时绑定的属性。之前对这个都不是很清楚,现在算是学到了。


其实这种方法在cocos2dx开发中可以用到的地方有很多(我是这么觉得的),自定义某个方法,写个代理,将操作独立出来。。。




posted @ 2013-10-31 22:53  Le Ciel  阅读(378)  评论(0编辑  收藏  举报