quick-cocos2d-x游戏开发【5】——创建菜单

quick-cocos2d-x游戏开发【5】——创建菜单

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

一个菜单是游戏中的一个基本要素,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】——创建菜单

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117244.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • php static

    php static当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能

    2022年7月2日
  • 大数据的简要介绍[通俗易懂]

    大数据的简要介绍[通俗易懂]大数据【介绍】1)大数据是什么2)大数据特点3)大数据能做什么(海量数据背景下)4)大数据项目流程1)大数据是什么指数据集的大小超过了现有典型数据库软件和工具的处理能力的数据2)大数据特点①海量化(Volume):数据量从TB到PB②多样化(Variety):数据类型复杂,超过80%的数据是非结构化的③快速化(Velocity):数据量在持续增加(两位数的年增长率)数据的处理速度要求高④高价值(Value):在海量多样数据的快速分析下能够发挥出更高的数据价值3)大数据能做什么(海量

    2022年5月24日
  • LeetCode Solutions : Swap Nodes in Pairs

    LeetCode Solutions : Swap Nodes in Pairs

    2022年1月12日
  • jquery面试题目_高并发面试题

    jquery面试题目_高并发面试题1.jQuery库中的$()是什么?(答案如下)$()函数是jQuery()函数的别称,乍一看这很怪异,还使jQuery代码晦涩难懂。一旦你适应了,你会爱上它的简洁。$()函数用于将任何对象包裹成jQuery对象,接着你就被允许调用定义在jQuery对象上的多个不同方法。你甚至可以将一个选择器字符串传入$()函数,它会返回一个包含所有匹配的DOM元素数组的jQ…

    2022年8月25日
  • Pycharm配置——解释器(interpreter)「建议收藏」

    Pycharm配置——解释器(interpreter)「建议收藏」今天打开pycharm运行一段代码,结果遇到了这个问题:以上应该是没有配置解释器的问题,那我是怎么解决这个问题的呢。1、打开文件(File)2、打开设置(Setting)3、打开新project的默认设置4点击projectInterpreter选项5、点击如下图的右上角按钮6、找到showall(在projectInterpreter里面),点击;7、点开以后得到如下界面,然后点击右上角的+号:8、箭头所指那里会自动配置编译器,(前提是你在安装pycharm之前安装了像pyt

    2022年8月25日
  • mysql 查看函数fsync_fsync()函数 Unix/Linux「建议收藏」

    mysql 查看函数fsync_fsync()函数 Unix/Linux「建议收藏」fsync,fdatasync-同步文件在内核态与存储设备内容简介#includeintfsync(intfd);intfdatasync(intfd);描述fsync()transfers(“flushes”)allmodifiedin-coredataof(i.e.,modifiedbuffercachepagesfor)thefilereferre…

    2022年5月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号