【Cocosd2d-x CCMenu菜单之二】
菜单项CCMenuItem是一个基类。 子类CCMenuItemFont、CCMenuItemLabel、CCMenuItemSprite、CCMenuItemToggle可增加CCMenu中形成菜单。
程序代码:
bool HelloWorld::init()
{ if ( !CCLayer::init() )
{
return false;
} CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback)); pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
origin.y + pCloseItem->getContentSize().height/2)); // create menu, it's an autorelease object
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, 1); //add your code...
//使用字体定义菜单项,包含 CCMenuItemAtlasFont, CCMenuItemFont 两种方式,CCMenuItemFont通过设置字体名称来设置字体。
CCMenuItemFont::setFontSize(30); //字号
CCMenuItemFont::setFontName("Courier New");//字体
CCMenuItemFont *item = CCMenuItemFont::create("--- Go Back ---", this, menu_selector(HelloWorld::menuItemFontcall));//參数1:文字内容。參数2:运行回调函数的目标类。參数3:按下触发的回调函数
//item->setPosition(ccp(visibleSize.width/2,100)); //通过字体配置PNG文件的 CCLabelAtlas
CCLabelAtlas *atlasfont = CCLabelAtlas::create("0123456789", "labelatlas.png", 16, 24, '.');//參数顺序:文字内容,图片,单个文字宽,单个文字高,默认显示字符
CCMenuItemLabel *item1 = CCMenuItemLabel::create(atlasfont, this, menu_selector(HelloWorld::menuItemFontcall2));//參数顺序:文字渲染类,运行回调函数的目标类,按下触发的回调函数
//item1->setPosition(ccp(visibleSize.width/2,400)); //精灵菜单项
CCSprite *spriteNormal = CCSprite::create("menuitemsprite.png", CCRectMake(0,23*2,115,23));
CCSprite *spriteSelected = CCSprite::create("menuitemsprite.png", CCRectMake(0,23*1,115,23));
CCSprite *spriteDisabled = CCSprite::create("menuitemsprite.png", CCRectMake(0,23*0,115,23)); CCMenuItemSprite* item3 = CCMenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, this, menu_selector(HelloWorld::menuCallback3));//參数:3种菜单状态及回调函数
//item3->setPosition(ccp(visibleSize.width/2,300)); //通过字体配置FNT类型文件的CCLabelBMFont
CCLabelBMFont* label = CCLabelBMFont::create("Enable AtlasItem", "bitmapFontTest3.fnt");
CCMenuItemLabel* item4 = CCMenuItemLabel::create(label, this, menu_selector(HelloWorld::menuCallback4) );
//item4->setPosition(ccp(visibleSize.width/2+50,250)); //触发器菜单项,能够将不论什么菜单项传递进去
CCMenuItemToggle *toggle = CCMenuItemToggle::createWithTarget( this,
menu_selector(HelloWorld::menuCallback5),
CCMenuItemFont::create("On"),
CCMenuItemFont::create("Off"),
NULL);
//toggle->setPosition(ccp(visibleSize.width/2+100, 150)); CCMenu *menu = CCMenu::create(item, item1, item3, item4, toggle, NULL);
menu->alignItemsVertically(); CCSize s = CCDirector::sharedDirector()->getWinSize(); int i=0;
CCNode* child;
CCArray * pArray = menu->getChildren(); //获取menu全部节点(菜单项)
CCObject* pObject = NULL;
CCARRAY_FOREACH(pArray, pObject)
{
if(pObject == NULL)
break; child = (CCNode*)pObject; CCPoint dstPoint = child->getPosition();//获取每一个节点位置
int offset = (int) (s.width/2 + 50);
if( i % 2 == 0)
offset = -offset; child->setPosition( ccp( dstPoint.x + offset, dstPoint.y) );//设置菜单项初始位置
child->runAction(
CCEaseElasticOut::create(CCMoveBy::create(2, ccp(dstPoint.x - offset,0)), 0.35f) //从初始位置移动新的位置。有振幅效果
);
i++;
} menu->setPosition(ccp(s.width/2, s.height/2));
this->addChild(menu); return true; } void HelloWorld::menuItemFontcall(CCObject* pSender)
{
CCLOG("menuItemFontcall...");
} void HelloWorld::menuItemFontcall2(CCObject* pSender)
{
CCLOG("menuItemFontcall2...");
}
void HelloWorld::menuCallback3(CCObject* pSender)
{
CCLOG("menuCallback3...");
}
void HelloWorld::menuCallback4(CCObject* pSender)
{
CCLOG("menuCallback4...");
}
void HelloWorld::menuCallback5(CCObject* pSender)
{
CCLOG("menuCallback5...");
}
【Cocosd2d-x CCMenu菜单之二】的更多相关文章
- WIN 下的超动态菜单(二)用法
WIN 下的超动态菜单(一)简介 WIN 下的超动态菜单(二)用法 WIN 下的超动态菜单(三)代码 作者:黄山松,发表于博客园:http://www.cnblogs.com/tomview/ ...
- Cocos2d-x学习笔记(10)(CCMenu菜单)
1.CCMenu创建方式 CCMenu* menu = CCMenu::create(cocos2d::CCMenuItem* item,--)參数为CCMenuItem菜单项的对象可变參数列表 2. ...
- SharePoint 2013 自定义扩展菜单(二)
接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...
- SharePoint开发 - 自定义导航菜单(二)母版页的菜单应用
博客地址 http://blog.csdn.net/foxdave 接上篇点击打开链接 本篇叙述在母版页中应用之前的配置信息生成菜单,主要涉及到母版页的自定义,并应用了第三方控件库DevExpress ...
- 菜单之二:使用xml文件定义菜单
参考<疯狂android讲义>2.10节 P174,参见归档project:XmlMenuDemo.zip 一般推荐使用XML文件定义菜单. 基本步骤如下: 1.定义布局文件 为简单显示原 ...
- 再造 “手机QQ” 侧滑菜单(二)——高仿左视图
代码示例:https://github.com/johnlui/SwiftSideslipLikeQQ 本篇文章中,我们将一起使用 Auto Layout 高仿手Q的左侧视图,力争达成从布局到动画的全 ...
- 菜单之二:使用xml文件定义菜单 分类: H1_ANDROID 2013-11-03 09:39 1038人阅读 评论(0) 收藏
参考<疯狂android讲义>2.10节 P174,参见归档project:XmlMenuDemo.zip 一般推荐使用XML文件定义菜单. 基本步骤如下: 1.定义布局文件 为简单显示原 ...
- angular复选框式js树形菜单(二)
删除(过滤)树形结构某一个子节点: function filterTreeData(treeData){ angular.forEach(treeData,function(item){ if (it ...
- Android 开发笔记(二)菜单设计
菜单设计一 // 创建菜单 public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "关于"); men ...
随机推荐
- C++ DLL导出类 知识大全
在公司使用C++ 做开发,公司的大拿搭了一个C++的跨平台开发框架.在C++开发领域我还是个新手,有很多知识要学,比如Dll库的开发. 参考了很多这方面的资料,对DLL有一个基本全面的了解.有一个问题 ...
- springBoot【01】
/* 使用spring官网的 http://start.spring.io/ 来建立项目包 生成入口文件,入口文件中对类注释@SpringBootApplication,这个注释是唯一的,标明这个类是 ...
- Fiddler抓包5-接口测试(Composer)【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/p/6754560.html 前言 Fiddler最大的优势在于抓包,我们大部分使用的功能也在抓 ...
- mysql 主从手动切换
将主从(3307主--3308从)切换 前提:3307正常 一.将3307设为只读.命令行操作 # 修改配置文件 vim /etc/mysql/mysql-//my.cnf # 在[mysqld]中增 ...
- react 使用antd的TreeSelect树选择组件实现多个树选择循环
需求说明,一个帐号角色可以设置管理多个项目的菜单权限 且菜单接口每次只能查询特定项目的菜单数据[无法查全部] 开发思路: 1,获取项目接口数组,得到项目数据 2,循环项目数据,以此为参数递归查询菜单数 ...
- HDU 5886 Tower Defence(2016青岛网络赛 I题,树的直径 + DP)
题目链接 2016 Qingdao Online Problem I 题意 在一棵给定的树上删掉一条边,求剩下两棵树的树的直径中较长那的那个长度的期望,答案乘上$n-1$后输出. 先把原来那棵树的 ...
- spoj - Distinct Substrings(后缀数组)
Distinct Substrings 题意 求一个字符串有多少个不同的子串. 分析 又一次体现了后缀数组的强大. 因为对于任意子串,一定是这个字符串的某个后缀的前缀. 我们直接去遍历排好序后的后缀字 ...
- 状压DP【p1896】[SCOI2005]互不侵犯
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包 ...
- 使用CXF开发RESTFul服务
相信大家在阅读CXF官方文档(http://cxf.apache.org/docs/index.html)时,总是一知半解.这里向大家推荐一本PacktPub.Apache.CXF.Web.Servi ...
- [Beijing2010组队]次小生成树Tree
小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成树还得是严格次小 ...