quick-cocos2d-x游戏开发【5】——创建菜单
一个菜单是游戏中的一个基本要素,quick在里面menuItem有两个包。一个是图片菜单。一个文本菜单。
一个、图片菜单ui.newImageMenuItem(params)
參数:
- image: 正常状态的button图像
- imageSelected: button按下时的图像(可选)
- imageDisabled: button被禁用时的图像(可选)
- listener: 回调函数
- tag: button的 Tag。会传入回调函数。多个button使用同一个回调函数时。可依据 Tag 区分哪一个button被按下(可选)
- x, y: 坐标(可选)
- sound: button按下时播放什么音效(可选)
对于params的參数名称是一定不能够写错。和上节中label一样,所以这个还是须要多敲几次记住一下。
tag是配合多个item共用一个回调函数来使用的,所以假设单独写一个function,记得有一个tag參数。
简单写一个图片button
local item1 = ui.newImageMenuItem({
image = "CloseNormal.png",
imageSelected = "CloseSelected.png",
listener = onClicked,
x = display.cx,
y = display.height*0.7,
tag = 1
})
二、文字菜单ui.newTTFLabelMenuItem(params)
文本button的參数许多。除了menuitem一些主要的參数外。还能够使用ui.newTTFLabel()中的參数。比如text文本内容。size文字大小等。
再写一个文字菜单
local item2 = ui.newTTFLabelMenuItem({
text = "MenuItem",
size = 50,
aligh = ui.TEXT_ALIGN_CENTER,
listener = onClicked,
x = display.cx,
y = display.height*0.3,
tag = 2
})
和Cocos2dx一样,我们还是须要一个Menu大管家来管理这些menuItem,假设使用原来lua的写法。我们要addChild每个item,quick在这里把menu又一次封装,让其使用和c++的写法一样,这就方便非常多了。
local menu = ui.newMenu({item1, item2})
self:addChild(menu)
这样就加入完毕了,回调函数咱们还没说。我们再看下。
local function onClicked(tag)
if tag == 1 then
print("item1 clicked")
elseif tag == 2 then
print("item2 clicked")
end
end
因为这个function是局部(local)的,所以一定要放在menuItem之前。和C一样。否则程序会认不出该函数。
当然也能够直接在listener内部就写好回调函数,再创建一个item,
local item3 = ui.newTTFLabelMenuItem({
text = "MenuItem2",
size = 30,
aligh = ui.TEXT_ALIGN_CENTER,
listener = function ()
print("item3 clicked")
end,
x = display.cx,
y = display.cy,
})
是不是so easy!
主要的使用就是这样,最后来一个完整的代码和效果。
function MyScene:ctor()
local function onClicked(tag)
if tag == 1 then
print("item1 clicked")
elseif tag == 2 then
print("item2 clicked")
end
end local item1 = ui.newImageMenuItem({
image = "CloseNormal.png",
imageSelected = "CloseSelected.png",
listener = onClicked,
x = display.cx,
y = display.height*0.7,
tag = 1
}) local item2 = ui.newTTFLabelMenuItem({
text = "MenuItem",
size = 50,
aligh = ui.TEXT_ALIGN_CENTER,
listener = onClicked,
x = display.cx,
y = display.height*0.3,
tag = 2
}) local item3 = ui.newTTFLabelMenuItem({
text = "MenuItem2",
size = 30,
aligh = ui.TEXT_ALIGN_CENTER,
listener = function ()
print("item3 clicked")
end,
x = display.cx,
y = display.cy,
}) local menu = ui.newMenu({item1, item2, item3})
self:addChild(menu) end
效果例如以下,
版权声明:本文博客原创文章,博客,未经同意,不得转载。
quick-cocos2d-x游戏开发【5】——创建菜单的更多相关文章
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- java游戏开发杂谈 - 创建一个窗体
package game1; import javax.swing.JFrame; /** * java游戏开发杂谈 * ---demo1:创建一个窗体 * * @author 台哥 * @date ...
- (转载)如何学好iphone游戏开发
转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...
- cocos2d 游戏开发实战
文章转自:http://uliweb.clkg.org/tutorial/read/40 6 cocos2d 游戏开发实战 6.1 创建cocos2d项目 6.2 cocos2d v3 & ...
- java游戏开发杂谈 - 实现游戏主菜单
经常玩游戏的同学,大家都知道,游戏都会有个主菜单,里面有多个菜单选项:开始游戏.游戏设置.关于游戏.退出游戏等等,这个菜单是怎么实现的呢. 有一定桌面软件开发基础的同学可能会想到,用JButton组件 ...
- Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单
在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒内失效,重复获取将导致上次获取的Token失效,本文将首先介 ...
- AutoCAD.NET二次开发:创建自定义菜单(AcCui)
从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单. 下面介绍一下菜单的创建过程: 1.在项目中添加引 ...
- unity3d游戏开发学习之使用3dmax创建导弹模型
在着手研究Unity3D的游戏开发时,3D模型能够考虑从unity的assets store去获取,也能够从网上搜索下载,同一时候咱们也能够尝试下自己动手去做一些简单的模型. 这里就依据unity3d ...
- Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)
Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...
- Unity 游戏开发技巧集锦之创建透明的材质
Unity 游戏开发技巧集锦之创建透明的材质 Unity创建透明的材质 生活中不乏透明或者半透明的事物.例如,擦的十分干净的玻璃,看起来就是透明的:一些塑料卡片,看起来就是半透明的,如图3-23所示. ...
随机推荐
- oracle 11g impdp时 报ORA-12899(转)
源库ZHS16BGK,汉字在数据库存放的时候占用两个字节 目标库UTF8,汉字在数据库里存放的时候占用三个字节 由于字符集不同,导致现在数据库impdp的时候有些表的字段长度不够,出现ORA-1289 ...
- 【Android开发经验】Android举UI设计经验
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 1.Android眼下的主流设备分辨率为480×800.720×1280.1080×1920,单位是像素.在 ...
- Springmvc +JNDI 在Tomcat下 配置数据源(转)
一. 简介 jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务 ...
- uva 10192 Vacation(最长公共子)
uva 10192 Vacation The Problem You are planning to take some rest and to go out on vacation, but you ...
- Android 动画具体解释View动画
为了让用户更舒适的在某些情况下,利用动画是那么非常有必要的.Android在3.0一旦支持两种动画Tween动漫Frame动画.Tween动画支持简单的平移,缩放,旋转,渐变.Frame动画就像Gif ...
- Linux注意到Makefile
规则: 目标 : 依靠 命令 make是怎样工作的: (1)make在当前文件夹下寻找makefile或Makefile. (2)假设找到,他会寻找文件里的第一个目标文件(target).并把这个文件 ...
- 产品经理(五岁以下儿童)myVegas Slots排名上升的秘密
myVEGAS Slots于AppStore上排名在今年也就是2月份时候飙升,那么什么情况导致这个现象的呢,我们试图通过App Annie的分析给出答案. 上面是myVegas的排名情况,我们能够看到 ...
- .net机试题总结
1.下面是一个由*号组成的4行倒三角形图案.要求:1.输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”:2.在屏幕上打印这个指定了行数的倒三角形. ******* ...
- 详细说明XML分解(两)—DOM4J
第一部分关于博客XML三接口,同时也为学习DOM4J该分析工具做准备.一般解析器基本上都实现了DOM和SAX这两组接口,DOM4J自然也不例外..DOM4J仅仅是经常使用解析器的当中一种,只是既然是实 ...
- delegate实现Javascript的each方法
C#如何用delegate实现Javascript的each方法 C#中有很多易混淆的关键词,例如delegate,Func, Action和 Predicate.Func, Action和 Pr ...