Cocos2d-x学习之---自定义图标(带触摸事件)
2013-10-31 22:53
134 查看
可能说自定义图标有点不太合适吧,但是我不好怎么形容这个。这个东西是这两天在看别人的代码中了解到的,主要的意思是指,游戏中某个图标,其本身带有触摸功能:即这个类继承了CCSprite和CCTouchDelegate。这样在游戏开发过程中,将这个类的对象(某个图标)放到某个场景中,当用户进行触摸操作的时候,图标能响应触摸操作,这样就能方便的在场景有多个图标的时候对触摸事件进行合理的管理。嗯,说的有点模糊,本身不是计算机专业出身,专业术语描述性不强。
大概的利用一个简单的例子来说说吧~
首先
在这里写自定义图标的类代码,再写一个代理,图标的触摸事件会调用代理执行,即如代码中所示,Item的触摸事件中调用代理的方法,可以这样说么:这样就给图标绑定了一种属性?
然后
这样写估计也就我才看得懂了,留着给自己备用吧~因为学C++都没学多久,又不是计算机专业出身的,所以有些东西别人看起来挺简单的,而我却觉得挺有意思,就如这个代理,在C++中,抄段百度的:代理就是定义一个行为和某类(class)的对象相似,而又潜在地表示了所有继承自该类的对象的东西,我们把这种类的对象叫做代理(surrogate).该方法的关键之处在于“用类来表示概念”。通过使用这种方法,既能使我们避免显示地处理内存分配,又能保持类在运行时绑定的属性。之前对这个都不是很清楚,现在算是学到了。
其实这种方法在cocos2dx开发中可以用到的地方有很多(我是这么觉得的),自定义某个方法,写个代理,将操作独立出来。。。
大概的利用一个简单的例子来说说吧~
首先
//图标代理 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开发中可以用到的地方有很多(我是这么觉得的),自定义某个方法,写个代理,将操作独立出来。。。
相关文章推荐
- 记录cocos2d-html5与cocosd-x jsb中遇到的坑
- Z.XML-Cocos2d-x开发笔记
- Cocos2d-x CCGridBase网格动作
- [置顶] 【玩转cocos2d-x之二十】从CCObject看cocos2d-x的内存管理机制
- 在cocos2d-x中使用DragonBones实现骨骼动画
- [转]eoe社区cocos2d-x游戏引擎知识大汇总
- 【初学】cocos2d-x-粒子效果添加
- cocos2d-x在IOS7下面文字显示异常的解决办法
- cocos2d中init中必须调用父类init
- cocosbuilder中的Callbacks和sound effects
- Cocos2d-x中屏幕截取
- CocoStudio创建动画帧
- cocos2d-x 模仿捕鱼一些小细节
- cocos2d 属性
- 用lua 管理cocosbuilder,两个相同的ccbfile
- 关于cocosbuilder,引入ccbfile后,播放的问题。
- 菜鸟教程:使用cocos2d-x如何搭建更易团队协同开发的工程
- Cocos2d-x 屏幕适配新解
- cocos2d-x在MAC平台中创建项目
- Cocos2d-x 生成真正的随机数