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所示. ...
随机推荐
- OpenCms创建网站的过程示意图——专用OpenCms人们刚开始学习
很多人听说过OpenCms,我知道它的强大,只需下载并安装,最后,我们看到了久违OpenCms,我们看到了它的简单的界面,喜悦之后,但难免困惑.如何用这个东西,我如何用它来网站,从哪里开始,无从下手. ...
- Windows Phone开发(28):隔离存储B
原文:Windows Phone开发(28):隔离存储B 上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的, ...
- poj 2309 BST 使用树阵lowbit
假设领悟了树阵lowbit,这个问题很简单,底部是奇数,使用lowbit(x)寻找x父亲,然后x父亲-1是的最大数量 至于lowbit问题是如何计算,寻找x父亲,事实上x+2^x二进制结束0的数量. ...
- android studio下gradle与Git错误解决方法
Error: Gradle: Execution failed for task ':mytask' > A problem occurred starting process 'command ...
- 解决wordpress发表文章,照片不能居中的问题
最近,随着一个年轻漂亮的女人的帮助(简直美极了.图相当火爆,性格非常好.大家闺秀型,照片给大家看看下一个突发.哈哈)获取她的个人博客,地址似乎是www.okaaok.com遇到发表文章.照片不能反正水 ...
- Android中一个类实现的接口数不能超过七个
近期一段时间,在开发Android应用程序的过程中,发现Android中一个类实现的接口数超过七个的时候,常常会出现超过第7个之后的接口不能正常使用.
- 再说JNDI
说到JNDI,即熟悉又陌生,熟悉在常常使用,如EJB3.0中的@EJB注入,底层实现即是JNDI的方式:喜闻乐见的: Context ctx=new InitialContext(); Object ...
- C#里System.Data.SQLite中对GUID的处理
string sqlstring = "select * from endpoint_policy where HEX([UserGuid]) ='" + CommonHelper ...
- UVA - 10118Free Candies(记忆化搜索)
题目:UVA - 10118Free Candies(记忆化搜索) 题目大意:给你四堆糖果,每一个糖果都有颜色.每次你都仅仅能拿随意一堆最上面的糖果,放到自己的篮子里.假设有两个糖果颜色同样的话,就行 ...
- CentOS 安装apache 及所需的 apr,apr-util,pcre
安装apache前确定已安装 apr,apr-util,pcre 一.安装apr [root@xt test]# tar -zxf apr-1.4.5.tar.gz [root@xt test]# c ...