quick-cocos2d-x游戏开发【6】——制作您自己的自定义效果button菜单
前面提到的主菜单使用,还是很easy的,但我们在商业产品。经常看到button他们人很好,照片不仅就好了,和动画也很不错。Candy Crash都玩过吧,他们看到,button。真的像果冻,效果确实非常值得称赞。因此,我们必须要。这当然不敢大意,后有一个抖动的效果。像这样。
好了,開始做个吧,我这个也是搬了一下coinflip中的button代码,算是学习一下。
创建一个views目录。里面创建一个MyButton.lua文件。这个就是我们的自己定义button类了。实现的原理比較简单,在ui.newImageMenuItem的table參数中。有图片,回调函数等參数。所以我们的做法就是在传入这些參数之后。我们在内部改动一些东西就能够了。等于quick给图片button封装了一次,我们自己再封装一下。
local MyButton = {} function MyButton.new(params)
local button = nil button = ui.newImageMenuItem(params)
return button end return MyButton
这就封装了一下quick中的ui.newImageMenuItem,以下做的就是把params的參数捕获,处理我们的效果之后再传给ui.newImageMenuItem中的參数。
function MyButton.new(params)
local button = nil
local listener = params.listener params.listener = function (tag)
--do things
listener(tag) end button = ui.newImageMenuItem(params)
return button end
上面这段代码中。我们将传入的回调函数先用listener变量保存起来。然后在listener參数中处理一些事情,最后记得在里面调用之前传入的回调函数就可以。所以如今还没加入效果代码,为了后面大家能看得更清楚些。
接下来,我们就来加入一下之前展示的效果了。
params.listener = function (tag)
local function zoom1(offset, time, onComplete)
local x, y = button:getPosition()
local size = button:getContentSize() local scaleX = button:getScaleX() * (size.width + offset) / size.width
local scaleY = button:getScaleY() * (size.height - offset) / size.height transition.moveTo(button, {y = y - offset, time = time})
transition.scaleTo(button, {
scaleX = scaleX,
scaleY = scaleY,
time = time,
onComplete = onComplete,
})
end local function zoom2(offset, time, onComplete)
local x, y = button:getPosition()
local size = button:getContentSize() transition.moveTo(button, {y = y + offset, time = time / 2})
transition.scaleTo(button, {
scaleX = 1.0,
scaleY = 1.0,
time = time,
onComplete = onComplete,
})
end button:getParent():setEnabled(false) --先关闭父类menu的功能 zoom1(40, 0.08, function()
zoom2(40, 0.09, function()
zoom1(20, 0.10, function()
zoom2(20, 0.11, function()
button:getParent():setEnabled(true)
listener(tag)
end)
end)
end)
end)
end
zoom1和zoom2是两个效果函数。主要是move和scale两个动作,在做效果之前。首先关闭父类的menu功能,这样防止在这个menu item还没做完动作又被玩家点上别的button上了,运行一系列的缩放效果之后,再开启menu功能,最后运行之前的回调函数,这样一个动画button就新奇出炉了。
赶紧放到menu中測试一下,
local Button = import("..views.MyButton") --导入Button local MyScene = class("MyScene", function ()
return display.newScene("myscene")
end) function MyScene:ctor()
local button = Button.new({
image = "icon.png",
listener = function ()
print("click")
end,
x = display.cx,
y = display.cy }) local menu = ui.newMenu({button})
self:addChild(menu) end return MyScene
这使得有可能加入向上,也可以和quick其他套餐button一起menu管家。
好,每个人都可以将自己喜爱的效果。
quick-cocos2d-x游戏开发【6】——制作您自己的自定义效果button菜单的更多相关文章
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- Unity游戏开发--30s制作精美地图
"君子生非异也.善假于物也"--<劝学>荀子 引用这句话的目的,是我觉得有时候.利用工具来提高游戏开发效率是很必要的. 利用工具,解放程序员双手. 今天想给大家介绍下. ...
- (转载)如何学好iphone游戏开发
转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
- 【Cocos2D研究院之游戏开发】
http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Co ...
- cocos2d 游戏开发实战
文章转自:http://uliweb.clkg.org/tutorial/read/40 6 cocos2d 游戏开发实战 6.1 创建cocos2d项目 6.2 cocos2d v3 & ...
- Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机
Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现的 ...
- 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴
上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗.按键音效等)则要通过playEffect来播放.本节使用该方法以及之前学 ...
- 22、Cocos2dx 3.0游戏开发找小三之音乐与音效:假如世界上没有了音乐,你的耳朵会孤单吗?
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30485103 假如世界上没有了音乐,在森林里.我们听 ...
随机推荐
- F5当刷新页面,出现“要再次显示此页,web该浏览器,你曾经有过发送消息再次提交...点击重试",如何防止此对话框解决方案的出现,
如何取消刷新页面弹出"重试"对话? 找了好多类似的问题都没有我想要的答案,请大家看清楚再回答. 比方说,登录过程中,成功之后转向还有一个页面success.jsp, 这时,假设刷新 ...
- 重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表
原文:重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表 [源码下载] 重新想象 Windows 8 S ...
- FTP文件操作之创建目录
前面几篇博客讲的都是对文件的操作,今天跟大家说一说对目录的操作,先让我们从创建目录开始说起吧. 创建目录很简单,首先创建一个ftp对象,然后将参数传进去,接着告诉ftp对象需要执行什么操作即可. 下面 ...
- [ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏
[ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏 Written In The Font " Wirte less Do more& ...
- Directx11学习笔记【十四】 使用最新的Effect框架和SDK
由于之前一直在看directx11龙书学习,因此sdk一直用的Microsoft DirectX SDK (June 2010) 版本,最近在stackoverflow上问dx11相关问题时,一直被大 ...
- Java知多少(87)选择框和单选按钮(转)
选择框.单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择. 选择框 选择框(J ...
- CodeForces 22D Segments 排序水问题
主题链接:点击打开链接 升序右键点.采取正确的点 删边暴力 #include <cstdio> #include <cstring> #include <algorith ...
- Google API快速生成QR二维码
Google API快速生成QR二维码 现在来说生成二维码最简单的方法是使用Google Chart API来实现,再次膜拜Google大神- Google Chart API是一套可以让你在线生成报 ...
- 自己动手写一个编译器Tiny语言解析器实现
然后,上一篇文章简介Tiny词法分析,实现语言.本文将介绍Tiny的语法分析器的实现. 1 Tiny语言的语法 下图是Tiny在BNF中的文法. 文法的定义能够看出.INNY语言有以下特点: 1 程序 ...
- 【Android基础】AndroidManifest常用权限permission整理
android.permission.ACCESS_COARSE_LOCATION 通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 android.permi ...