04--简单菜单使用
准备工作
首先创建一个Cocos2DX-win32应用程序,项目名称未MenuDemo并取消Box2D和声音的支持,如下图:
点击“Finish”有运行一下项目,如下图没有问题
(windows下配置见 http://www.cnblogs.com/BlueBeauty/p/3687542.html 和http://www.cnblogs.com/BlueBeauty/p/3690409.html)
图片菜单使用
为了便于观察,我将背景和“HelloWorld”注释掉。其实在新创建的项目中已经有了一个菜单就是右下角关闭菜单。我们再添加一个Play菜单。首先看看CCMenuItemImage创建菜单函数的原型 static CCMenuItemImage* create(const char *normalImage, const char *selectedImage, CCObject* target, SEL_MenuHandler selector)。前两个参数是普通状态和选择状态的图片名称,最后一个参数是一个函数指针,也就是点这个菜单要做的事情。首先选择两张图片拷贝到项目目录的Resources下,然后在HelloWorldScene.cpp文件的init方法中添加如下代码
CCMenuItemImage *pPlay = CCMenuItemImage::create("btn-play-normal.png","btn-play-selected.png",this,menu_selector(HelloWorld::menuCloseCallback)); pPlay->setPosition(ccp(0,0)); CCMenu* pMenu = CCMenu::create(pCloseItem,pPlay, NULL); // CCMenu* pMenu = CCMenu::create(pCloseItem, NULL)
保存运行项目,如图:
我们看到图片菜单出现在了窗口的左下方但又没显示完整。为了把图片显示完整,再来修改一个菜单的位置pPlay->setPosition(ccp(125/2,42/2)) (图片大小为125,42)如上图。由此我们可以确定引擎将显示区域的左下角顶为原点;setPosition函数设置的是元素的中心点在现实区域的位置。那如何才能将菜单放在正中间呢,这样做还要用到一个来自CCDirector类getWinSize的函数。这个函数的名称期初让我一些迷惑,以为获取的大小包含了窗体的标题栏和边框,其实不然该函数返回的大小就是现实区域的大小。小伙们下断跟踪一下就知道了。
好了,这个菜单就还差自己的回调函数,其实不难就不写了记得在头文件中实现声明哦。
文本菜单使用
下面再学一下文本菜单的使用,文本标签菜单的使用需要提供一个文本标签,还是看看函数声明
static CCMenuItemLabel * create(CCNode*label, CCObject* target, SEL_MenuHandler selector);
首先添加一个回调函数,如下:
HelloWorldScene.h
class HelloWorld : public cocos2d::CCLayer { public:virtual bool init(); static cocos2d::CCScene* scene();// a selector callbackvoid menuCloseCallback(CCObject* pSender);void menuPlayCallback(CCObject* pSender);void menuPlayLabelCallback(CCObject* pSender);// implement the "static node()" method manually CREATE_FUNC(HelloWorld); };HelloWorldScene.cpp
void HelloWorld::menuPlayLabelCallback(CCObject* pSender) {CCLOG("menuPlayLabelCallback"); }
修改init方法
CCMenuItemImage *pPlay = CCMenuItemImage::create("btn-play-normal.png","btn-play-selected.png",this,menu_selector(HelloWorld::menuPlayCallback));pPlay->setPosition(ccp(size.width/2,size.height/2));//新加的CCLabelTTF* pLabel = CCLabelTTF::create("Label Menu Demo","Arial",30);CCMenuItemLabel* pMenuLabel = CCMenuItemLabel::create(pLabel,this,menu_selector(HelloWorld::menuPlayLabelCallback));pMenuLabel->setPosition(ccp(size.width/2,size.height/2-42));CCMenu* pMenu = CCMenu::create(pCloseItem,pPlay,pMenuLabel, NULL);
F5看看效果吧
转载于:https://www.cnblogs.com/BlueBeauty/p/3691732.html
04--简单菜单使用相关推荐
- 百练 04 简单的整数划分问题
百练 04 简单的整数划分问题 总时间限制: 内存限制: 100ms 65536kB 描述 将正整数nn表示成一系列正整数之和,n=n1+n2+-+nkn=n_1+n_2+-+n_k, 其中n1> ...
- c语言 swtich写简单菜单输出各种图形
/** 写一个简单菜单输出各种图形 */ #include <stdio.h>//宏定义 #define LEN 16void anyKey(void); void showMenu(vo ...
- java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示
目录 1.题目说明 2.实验设计 2.1 表设计 2.2 工程结构 3.运行界面截图与说明 4.小结 附录:源代码 src/main/java src/main/java/bean Goods.jav ...
- linux如何右键新建文件夹,在Ubuntu 18.04右键菜单中增加新文档(New Document)及其他类型选项...
本文教你在Ubuntu 18.04操作系统下使用命令操作在右键菜单中增加"新文档(New Document)"选项,包括为不同文件类型增加右键菜单选项的方法.起因是当我尝试创建一个 ...
- Ubuntu14.04引导菜单修复
原文链接:http://www.metsky.com/archives/636.html 独立分区下的Ubuntu引导菜单修复有点麻烦,执行挂载等命令时要小心检查,修复此类引导,首先需要确保当前系统和 ...
- Tesseract-OCR 3.04简单使用举例(读入图像输出识别结果)
下面code是对Tesseract-OCR 3.04版本进行简单使用的举例:包括两段,一个是读入带有中文字符的图像,一个是读入仅有英文字符的图像: #include "funset.hpp& ...
- listview 打开文件 c#_.NET CORE(C#) WPF简单菜单MVVM绑定
阅读导航 本文背景 代码实现 本文参考 源码 1. 本文背景 WPF中垂直导航菜单大家应该都常用,本文介绍使用MVVM的方式怎么绑定菜单,真的很简单. 2. 代码实现 使用 .Net Core 3.1 ...
- .NET CORE(C#) WPF简单菜单MVVM绑定
阅读导航 本文背景 代码实现 本文参考 源码 1. 本文背景 WPF中垂直导航菜单大家应该都常用,本文介绍使用MVVM的方式怎么绑定菜单,真的很简单. 2. 代码实现 使用 .Net Core 3.1 ...
- c语言程序菜单如何做,用C语言实现简单菜单
通过本实例简单了解C语言实现菜单的基本原理. 实例中没有什么过多深入的东西,仅仅是简单实现基本的菜单. 本实例是查询航班时刻表: /********************************** ...
- 安卓学习笔记:使用PopupWindow创建简单菜单
PopupWindow是一个弹出式窗口,它可以展示任意View.他会浮在当前窗口的上方展示. 下面看代码: public class MyActivity extends Activity { pri ...
最新文章
- 如何定义中文转语音的语气
- 面试 -- Java基础(一)
- 利剑无意之Dubbo 面试题
- nginx反向代理打印日志_nginx启用TCP反向代理日志配置
- 安卓签名生成工具_ios app如何进行内测?ios app和安卓app的内测有何区别?
- react 父子传值_React父子组件传值
- 利用MATLAB进行符号运算。
- Hi3559A Hi3519A Hi3556A算力对比
- 计算机组成及linux基础
- 实时传输协议:RTP、RTCP、RTSP介绍
- c语言组建怎样变成编译,c语言编译【处理流程】
- hpc与超级计算机的区别,超级计算和高性能计算(HPC)的综合分析
- Linux 下的任务切换神器 Ctrl+Z
- 2020年燃料电池行业研究及产业链梳理
- 动态规划总结(01背包 完全背包 多重背包)
- java计算机毕业设计珠宝首饰进销存管理系统源码+数据库+系统+lw文档
- 群晖搭建服务器(外网访问+开机自启动)
- CodeForces #549 Div.2 D. The Beatles
- 全网最详细CDMP认证看这一篇就够了
- 动漫界的五大舔狗 舔龟双面、舔猫Tom、舔羊阿沸、卑微正男、舔虎小黑