cocos2d-x中继承CCMenu定义自己的menu
2011-10-26 18:17
302 查看
昨天在项目中为了写一个有特殊效果的menu,于是想想,不就是几个action吗,回调一下就ok了,的确这样实现了,关键在于这个项目中实在是灰常多的按钮,写了6、7个后,我吐血了,决定继承CCmenu,自己定义一个,这样就不用每个都写了。
原理很简单,新建一个类继承自CCMenu,重写它的touch事件,加入自己的效果。
一定要记得改变他的初始化方法,原来的初始化方法返回的是系统的CCMenu,要自己改为返回自己定义的Menu
这样你可以自己随意改变里面的m_pSelectedItem,要什么效果,自己写咯。
原创文章,欢迎转载。转载请注明地址:http://blog.csdn.net/yanghuiliu/article/details/6908117
原理很简单,新建一个类继承自CCMenu,重写它的touch事件,加入自己的效果。
bool MyMenu::ccTouchBegan(CCTouch* touch, CCEvent* event) { CC_UNUSED_PARAM(event); if (m_eState != kCCMenuStateWaiting || ! m_bIsVisible) { return false; } for (CCNode *c = this->m_pParent; c != NULL; c = c->getParent()) { if (c->getIsVisible() == false) { return false; } } m_pSelectedItem = this->itemForTouch(touch); if (m_pSelectedItem) { m_eState = kCCMenuStateTrackingTouch; m_pSelectedItem->selected(); //这里加入自己想要的效果。。。。。。。。。。。。。。。。 return true; } return false; }还没有结束,我想要的是让menu里面的item有特效,那么我还应该重写它的menuWithItems方法。
一定要记得改变他的初始化方法,原来的初始化方法返回的是系统的CCMenu,要自己改为返回自己定义的Menu
MyMenu * MyMenu::menuWithItems(CCMenuItem* item, ...) { va_list args; va_start(args,item); MyMenu *pRet = new MyMenu();//这里记得要注意 if (pRet && pRet->initWithItems(item, args)) { pRet->autorelease(); va_end(args); return pRet; } va_end(args); CC_SAFE_DELETE(pRet) return NULL; } MyMenu* MyMenu::menuWithItem(CCMenuItem* item) { return menuWithItems(item, NULL); }
这样你可以自己随意改变里面的m_pSelectedItem,要什么效果,自己写咯。
原创文章,欢迎转载。转载请注明地址:http://blog.csdn.net/yanghuiliu/article/details/6908117
相关文章推荐
- cocos2d-x中继承CCMenu定义自己的menu
- cocos2d-x中继承CCMenu定义自己的menu
- cocos2d-x中继承CCMenu定义自己的MyMenu,这个是解决优先级的问题
- cocos2d-x如何继承CCMenu并且在触摸函数中加入自己的实现
- Cocos2d自定义组件|继承CCMenu或CCMenuItem
- andriod 继承view定义自己的形状
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- Cocos2d-x 创建自己定义项目模板
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- iOS - 自己定义alertView,继承自UIView,能够加入子视图,标题图片+文字
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- Menu的自己定义实现-------保卫萝卜造塔升级塔菜单实现
- 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三】动手绑定自己定义类至Lua
- .Net 配置文件——继承ConfigurationSection实现自己定义处理类处理自己定义配置节点
- 关于Cocos2d-x中自己定义的类的名字和Cocos2d-x引擎库中的类的名字重复的解决方法
- ListView的两种使用方法1.继承ListActivity2.自己定义ListView
- 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之四】使用绑定C++至Lua的自己定义类
- cocos2d-x、CCMenu、CCMenuItem
- 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之中的一个】环境搭建
- android-继承BaseAdapter--自己定义适配器,getView运行多次的解决方法