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所示. ...
随机推荐
- Graphics.DrawString 方法
MSDN上的解释: 在指定位置而且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString( string s, Font font, Brush b ...
- SQL Server :理解数据记录结构
原文:SQL Server :理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下 ...
- Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask
原文:Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask 启动器与选择器简单的地方在于,它们的使用方法几乎一模一样,从前面几节中,我相 ...
- BI事实上的和维表定义
一个典型的例子是,逻辑业务相比立方体,产品尺寸.时间维度.位置尺寸,分别作为不同的轴.轴的交点是一个详细的事实.这一事实表是多维度的交叉点的一个表.维表是事实的分析的一种形式. 首先介绍下数据库结构中 ...
- Codeforces Round #191 (Div. 2) D. Block Tower
D. Block Tower time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- MVC Controller向View传值(ViewData与ViewBag)
近期在开发项目中,使用的是ASP.NET MVC因为之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习. 一:使用 ViewData使用: public ActionResult I ...
- linux、hdfs、hive、hbase经常使用的命令
linux经常使用命令 pwd 查看当前工作文件夹的绝对路径 cat input.txt 查看input.txt文件的内容 ls 显示当前文件夹下全部的文件及子文件夹 rm recommender-d ...
- SPOJ TWOPATHS Two Paths
题目意思:给一棵树,找到俩个不相交的通路,使得这俩个通路的长度和乘机最大: 解法: 小哥一看呵呵 这不就是枚举点 然后求俩边的树的直径在相乘求个最大值的题么! 呵呵 这个N 有100000 当时就不玩 ...
- Cocos2d-x实现简单的翻牌效果
触发器互联网影响找了很多.有自己的点重写一个复杂的sprite类来实现.简单的操作来对引擎的使用CCOrbitCamera实现,但是,也存在一些问题,后变反了. 我在用的仅仅是一个简单的翻牌效果,点击 ...
- 从头开始编写项目Makefile(八):型号规则
[版权声明:转载请保留源:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 上创建的文件夹谈及.没有生产目标文件到相应的文件夹,在这里 ...