Cocos2d-X中的菜单
在Cocos2d-X实现显示菜单的方式比較特殊,首先须要使用CCMenu创建一个菜单,然后使用CCMenuItem创建一个菜单项,实际上程序中显示的菜单是使用CCMenu和CCMenuItemFont共同作用的结果,在Cocos2d-X中CCMenu仅仅是一个容器,须要使用CCMenuItemFont才干实现创建菜单
程序演示样例:创建一个简单的菜单
程序代码:
#include "Menu.h" CCScene* Menu::scene()
{
CCScene* scene = CCScene::create(); Menu* layer = Menu::create(); scene->addChild(layer); return scene;
} bool Menu::init()
{
//初始化父类层
CCLayer::init(); //得到窗体的尺寸
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //创建一个Menu(看不到效果,Menu仅仅是一个容器)
CCMenu* menu = CCMenu::create(); //加入Menu
addChild(menu); //创建一个MenuItem, 默认的Item位置就在中央
CCMenuItemFont* item = CCMenuItemFont::create("This is item"); //将MenuItem添加到Menu上
menu->addChild(item1); return true;
}
运行结果:
程序演示样例:创建多个菜单,而且实现菜单响应事件
在Menu.h中加入以下的代码
#ifndef __Menu_H__
#define __Menu_H__ #include "cocos2d.h"
USING_NS_CC; class Menu : public CCLayer
{
public:
bool init(); static CCScene* scene(); void menuHandler(CCObject*); CREATE_FUNC(Menu);
}; #endif // __HELLOWORLD_SCENE_H__
在Menu.cpp中加入以下的代码
#include "Menu.h" CCScene* Menu::scene()
{
CCScene* scene = CCScene::create(); Menu* layer = Menu::create(); scene->addChild(layer); return scene;
} bool Menu::init()
{
//初始化父类层
CCLayer::init(); //得到窗体的尺寸
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //创建一个Menu(看不到效果。Menu仅仅是一个容器)
CCMenu* menu = CCMenu::create(); //加入Menu
addChild(menu); //创建一个MenuItem, 默认的Item位置就在中央
CCMenuItemFont* item1 = CCMenuItemFont::create("This is item1"); //将MenuItem添加到Menu上
menu->addChild(item1); //创建一个MenuItem, 默认的Item位置就在中央
CCMenuItemFont* item2 = CCMenuItemFont::create("This is item2"); //加入MenuItem
menu->addChild(item2); //设置item2的位置
item2->setPositionY(item1->getPositionY() - 100); //设置响应函数:当触摸到item时调用Menu::menuHandler
//第一个參数:响应函数所在的对象
//第二个參数:成员函数指针
item1->setTarget(this, menu_selector(Menu::menuHandler));
item2->setTarget(this, menu_selector(Menu::menuHandler)); //设置菜单项的ID
//item1的ID为1
//item2的ID为2
item1->setTag(1);
item2->setTag(2); return true;
} //响应菜单事件
void Menu::menuHandler(CCObject* obj)
{
//将obj强制转换成菜单项类型
CCMenuItemFont* item = (CCMenuItemFont*)obj; //得到菜单项的ID
int tag = item->getTag(); //推断用户点击了那个菜单
if(1 == tag)
{
MessageBox(NULL, TEXT("item1 is clicked !"), TEXT("MenuItem响应"), MB_OK);
}
else
{
MessageBox(NULL, TEXT("item2 is clicked !"), TEXT("MenuItem响应"), MB_OK);
}
}
运行结果:
当单击“This is Item1”后:
当单击“This is Item2”后:
Cocos2d-X中的菜单的更多相关文章
- android中常用菜单(menu)的基本知识
(一)选项菜单 1.简单的创建菜单: @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMe ...
- 如何在cocos2d项目中enable ARC
如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...
- 如何在Cocos2D游戏中实现A*寻路算法(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- 如何在Cocos2D游戏中实现A*寻路算法(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- 在 jupyter 中添加菜单和自动完成功能
在 jupyter 中添加菜单和自动完成功能 参考文档http://www.360doc.com/content/17/1103/14/1489589_700569828.shtmlhttp://to ...
- Android 中的菜单 OptionsMenu的简单应用
OptionsMenu就是安卓手机中的菜单选项 首先 要实现对菜单的操作就要先重写OnCreateOptionsMenu(Menu menu)方法 通常有两种方法来实现对菜单中选项的添加 第一种是动态 ...
- 如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单
方法1:亲测 成功 转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef ...
- WPF中的菜单模板
原文:WPF中的菜单模板 资源字典代码如下: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xa ...
- bootstrap如何去除自带的样式----导航栏中的菜单实现平滑的过渡到对应的菜单区域-------动态跟换模态框中的内容
问题1:如何去除bootstap中css中自带的overflow:hidden这个样式 今天遇见在bootstap中轮播图上的 附带图 片不能够显示出来,图片始终有一部分的高度 被隐藏了 后来通 ...
- abp web.mvc项目中的菜单加载机制
abp中的菜单加载机制 在abp中菜单的定义与我们传统写的框架不一样,它是在编写代码的时候配置,而我们一般写的通用权限管理系统中,是后期在后台界面中添加的.这一点有很大不同.abp关于菜单的定义及管理 ...
随机推荐
- 树莓派GPIO点亮第一个led
代码如下: 注意:::::此时的GPIO口为18编号口而非GPIO18 import RPi.GPIO as GPIO //引入函数库 import time RPi.GPIO.setmode(GPI ...
- jboss之启动加载过程详解
今天看了看jboss的boot.log和server.log日志,结合自己的理解和其他的资料,现对jboss的启动和加载过程做出如下总结: boot.xml是服务器的启动过程的日志,不涉及后续的操作过 ...
- 【PostgreSQL-9.6.3】LOG: unrecognized configuration parameter "dynamic_shared_memory_type"
报错如下: 输入如下命令启动PG数据库时,报错: [postgres@drz ~]$ pg_ctl -D /opt/postgresql/data/ start server starting FAT ...
- Farseer.net轻量级开源框架 入门篇:修改数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ...
- linux环境下为php7装phpredis扩展
phpredis在php7.php5下都有不同的版本,装岔了可能会编译报错,所以在安装之前请先看下自己的php是啥版本. 我的redis装的是redis3.2.3版本. 用phpinfo()查看安装的 ...
- Description Resource Path Location Type Missing artifact com.********:framework:jar:1.0.2 pom.xml /项目名 line **** Maven Dependency Problem
问题具体描述如下图所示: 对于该问题本人是这么解决的. 在window下[Preferences]目录找到[Maven]下的[usersetting] 查看local repository 里面的路径 ...
- 02JavaScript基础语法及数据类型
JavaScript基础语法及数据类型 2.1数据类型 2.1.1字符串(String) 用单引号或双引号括起来的零个或多个单一的字符所组成. 2.1.2数值(Number) 包含整数或浮点数. 2. ...
- Android studio开发-第一个应用
Android studio开发-第一个应用 上效果图 1.先创建布局文件 firstbutton.xml 代码 <?xml version="1.0" encoding=& ...
- TWaver矢量小试——Android演进路线图
还有半个多月就到春节了,年底相信很多公司都会进行年度总结以及公司发展状况总结,在这过程中难免会用到RoadMap,在这我们也使用TWaver的矢量部分绘制一个Android系统的发展历程.先看效果:什 ...
- try catch影响Spring事务吗?
对于这个问题有两种情况: 1.catch只打印异常,不抛出异常 try { 数据库做添加订单表; /; 数据库减少库存; }catch (Exception e){ e.printStackTrace ...