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看看效果吧

posted on 2014-04-26 16:50 深秋 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/BlueBeauty/p/3691732.html

04--简单菜单使用相关推荐

  1. 百练 04 简单的整数划分问题

    百练 04 简单的整数划分问题 总时间限制: 内存限制: 100ms 65536kB 描述 将正整数nn表示成一系列正整数之和,n=n1+n2+-+nkn=n_1+n_2+-+n_k, 其中n1> ...

  2. c语言 swtich写简单菜单输出各种图形

    /** 写一个简单菜单输出各种图形 */ #include <stdio.h>//宏定义 #define LEN 16void anyKey(void); void showMenu(vo ...

  3. java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示

    目录 1.题目说明 2.实验设计 2.1 表设计 2.2 工程结构 3.运行界面截图与说明 4.小结 附录:源代码 src/main/java src/main/java/bean Goods.jav ...

  4. linux如何右键新建文件夹,在Ubuntu 18.04右键菜单中增加新文档(New Document)及其他类型选项...

    本文教你在Ubuntu 18.04操作系统下使用命令操作在右键菜单中增加"新文档(New Document)"选项,包括为不同文件类型增加右键菜单选项的方法.起因是当我尝试创建一个 ...

  5. Ubuntu14.04引导菜单修复

    原文链接:http://www.metsky.com/archives/636.html 独立分区下的Ubuntu引导菜单修复有点麻烦,执行挂载等命令时要小心检查,修复此类引导,首先需要确保当前系统和 ...

  6. Tesseract-OCR 3.04简单使用举例(读入图像输出识别结果)

    下面code是对Tesseract-OCR 3.04版本进行简单使用的举例:包括两段,一个是读入带有中文字符的图像,一个是读入仅有英文字符的图像: #include "funset.hpp& ...

  7. listview 打开文件 c#_.NET CORE(C#) WPF简单菜单MVVM绑定

    阅读导航 本文背景 代码实现 本文参考 源码 1. 本文背景 WPF中垂直导航菜单大家应该都常用,本文介绍使用MVVM的方式怎么绑定菜单,真的很简单. 2. 代码实现 使用 .Net Core 3.1 ...

  8. .NET CORE(C#) WPF简单菜单MVVM绑定

    阅读导航 本文背景 代码实现 本文参考 源码 1. 本文背景 WPF中垂直导航菜单大家应该都常用,本文介绍使用MVVM的方式怎么绑定菜单,真的很简单. 2. 代码实现 使用 .Net Core 3.1 ...

  9. c语言程序菜单如何做,用C语言实现简单菜单

    通过本实例简单了解C语言实现菜单的基本原理. 实例中没有什么过多深入的东西,仅仅是简单实现基本的菜单. 本实例是查询航班时刻表: /********************************** ...

  10. 安卓学习笔记:使用PopupWindow创建简单菜单

    PopupWindow是一个弹出式窗口,它可以展示任意View.他会浮在当前窗口的上方展示. 下面看代码: public class MyActivity extends Activity { pri ...

最新文章

  1. 如何定义中文转语音的语气
  2. 面试 -- Java基础(一)
  3. 利剑无意之Dubbo 面试题
  4. nginx反向代理打印日志_nginx启用TCP反向代理日志配置
  5. 安卓签名生成工具_ios app如何进行内测?ios app和安卓app的内测有何区别?
  6. react 父子传值_React父子组件传值
  7. 利用MATLAB进行符号运算。
  8. Hi3559A Hi3519A Hi3556A算力对比
  9. 计算机组成及linux基础
  10. 实时传输协议:RTP、RTCP、RTSP介绍
  11. c语言组建怎样变成编译,c语言编译【处理流程】
  12. hpc与超级计算机的区别,超级计算和高性能计算(HPC)的综合分析
  13. Linux 下的任务切换神器 Ctrl+Z
  14. 2020年燃料电池行业研究及产业链梳理
  15. 动态规划总结(01背包 完全背包 多重背包)
  16. java计算机毕业设计珠宝首饰进销存管理系统源码+数据库+系统+lw文档
  17. 群晖搭建服务器(外网访问+开机自启动)
  18. CodeForces #549 Div.2 D. The Beatles
  19. 全网最详细CDMP认证看这一篇就够了
  20. 动漫界的五大舔狗 舔龟双面、舔猫Tom、舔羊阿沸、卑微正男、舔虎小黑

热门文章

  1. 毕业设计-基于微信小程序的“安心乘车”服务系统
  2. HIVE学习系列——windows Hadoop安装(上)
  3. MATLAB 2014a将m文件打包成jar包
  4. 36岁失业了,我该何去何从怎么选择?
  5. java命令执行jar包main方法指定相关依赖
  6. Linux内核源码目录介绍
  7. 给Delphi7升级安装TeeChart pro v7)】
  8. ArcGIS中做一张新闻1+1演播厅背景图(附世界矢量地图.shp下载)
  9. Java JDK1.8帮助文档API下载
  10. HTML5 css4