Menu的自定义实现-------保卫萝卜造塔升级塔菜单实现

cocos2dx原生的menu排版函数实现的很无完整,像最基本的Item的排序要想做得稍微漂亮一些就需要我们自己实现。

对于Menu我们可以用两种方法来实现:

1.大神级别。 继承自Control,自己来封装新的Menu类,要求我们能够友好的去抽象定义基类。

2.半仙级别。修改MenuItem的函数或者重写一套对于Item的排序函数。做到自己想要的排版。

3.菜鸟级别。继承自Node,在Node中添加成员变量Menu,针对不同的UI设置Item的位置和动画。

这里解析一下第三种方法,第一种方法确实是最好的,做到基类重用,但是一些动态的效果跟3一样写,没有一个好的架构就还是老老实实用3吧。

保卫萝卜的菜单分为建塔菜单和升级塔的菜单。比较难的是建造塔的菜单,这个菜单的实现有几个技术难点:

1.根据当前关卡的塔来创建item

2.塔如果超过4种要分两行

3.Menu要根据屏幕位置动态适应position

4.show和hide菜单的时候要实现动画,Item都是放大和缩小后才隐藏的。

(进入关卡前资源一定要实现动态异步加载,只加载本关所需要的素材,还有各种文件的异步加载,具体的参考我的上一篇博客)

先看下效果图吧:

这篇blog我不会贴代码了,只讲解一下框架逻辑。

首先定义一个类继承自MenuItem,简单封装一下Menuitem,让我们后面可以判断点击到的item是哪一种塔,因为我们要展示item是否为可点击状态。 如果金币不够的话是不允许建造塔的。

然后创建一个Node。

createMenuItem的时候是根据当前关卡的配置信息来创建的,创建所有Item到成员变量
cocos2d::Vector<cocos2d::MenuItem*> menuItems;中,以便我们后期执行Item动画。

如果超过4种塔,我们就再添加一个Menu,在Node中添加两个Menu来控制排版。

定义成员函数void updateItemsPosition(int row, int col),根据当前点击砖块的位置,在Node中动态设置Menu的位置。

最后就是第四步了,实现show和hide动画。

这样就很简单了,只需动画执行完隐藏就好,如下:

void *****::hide()
{
	if (!m_pRangeSprite->isVisible())
	{
		return;
	}
	ScaleTo *scaleTo = ScaleTo::create(CW_UPTOWERMENU_ANIM_DURATION, 0.0f);
	auto callc = CallFunc::create(CC_CALLBACK_0(UpTowerMenu::hideMe, this));
	m_pRangeSprite->runAction(CCSequence::create(scaleTo, callc, NULL));
}

到这里就可以做出完全一样的菜单了,这是一种比较简单的方法,类似的升级菜单也是如此。

吐槽一下:

今天TX电话面试了,面试的时候各种抓瞎。

问我多线程渲染啊,函数式编程啊,还有怎么省电。。

当时被问的我就说不会了,没看过源码,不理解底层。。。

下来一看神马多线程渲染,就是异步加载,底层一个队列来异步加载资源的,源码也看过了。。。我以为是opengl绘图性能多线程。。屏幕分块渲染呢,完蛋了。

还有函数式编程,我说不会没听过。。。尼玛原来是闭包,lambda函数,lua元表,IOSblock。。。。我竟然说不会!!!

省电这个就确实不太理解了,可能也是概念上的问题吧,不知道咋整了,这一面感觉好蛋疼。。。求过了!!!!

Menu的自定义实现-------保卫萝卜造塔升级塔菜单实现,布布扣,bubuko.com

时间: 2024-11-16 18:28:08

Menu的自定义实现-------保卫萝卜造塔升级塔菜单实现的相关文章

Menu的自己定义实现-------保卫萝卜造塔升级塔菜单实现

cocos2dx原生的menu排版函数实现的非常无完整,像最主要的Item的排序要想做得略微美丽一些就须要我们自己实现. 对于Menu我们能够用两种方法来实现: 1.大神级别. 继承自Control,自己来封装新的Menu类,要求我们可以友好的去抽象定义基类. 2.半仙级别.改动MenuItem的函数或者重写一套对于Item的排序函数.做到自己想要的排版. 3.菜鸟级别.继承自Node,在Node中加入?成员变量Menu,针对不同的UI设置Item的位置和动画. 这里解析一下第三种方法,第一种方

常规功能和模块自定义系统 (cfcmms)—009主界面和菜单的展示和控制(1)

常规功能和模块自定义系统 (cfcmms)-009主界面和菜单的展示和控制(1) 先从主界面和菜单.主tab标签以及一些附加的设置说起. 一个比较传统的管理软件中,一般会包括一个顶部区域.底部区域.菜单条(树状菜单)和主操作区域.本系统亦是如此,只是增加了一点灵活控制的地方.首先来看看本系统中的界面布局和extjs的类之间的对应关系,extjs中的面象对象的功能已经比较完善了,现在开发b/s程序就和我以前用组件开发delphi系统差不多,建好一个个组件类,然后直接使用即可. 和主界面.菜单相关的

Android 自定义ViewGroup,实现侧方位滑动菜单

侧方位滑动菜单 1.现在adnroid流行的应用当中很多都是用的侧方位滑动菜单如图: 将菜单显示在左边,内容页面显示在右边,通过滑动或则按钮点击来隐藏和显示菜单. 2.首先对ViewGroup进行个了解: View是ViewGroup的父类,ViewGroup具有View的所有特性,ViewGroup主要用用来充当View的容器,将其中的View作为自己孩子, 并对其进行管理,当然孩子也是可以是ViewGroup类型. View类一般用于绘图操作,重写他的onDraw方法,但它不可以包含其他组件

Android 造炫目的圆形菜单 秒秒钟高仿建行圆形菜单

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43131133,本文出自:[张鸿洋的博客] 1.概述 今天打开建行看存款,一看伤心欲绝,再看:我擦,这个圆形菜单挺炫.于是,为了掩盖我悲痛的心情,我决定是实现这个效果.好了,其实还有个原因,记得我初学android那会我做的应用被鄙视了,说我的菜单没有建行的好看,那么今天,证明自己的时刻到了.我决定用我做的圆形菜单的控件,32s实现个建行的菜单给他看看,顺便教教他~~ 玩笑开完,

Android自定义组件——四个方向滑动的菜单实现

今天无意中实现了一个四个方向滑动的菜单,感觉挺好玩,滑动起来很顺手,既然已经做出来了就贴出来让大家也玩弄一下. 一.效果演示 (说明:目前没有安装Android模拟器,制作的动态图片太卡了,就贴一下静态图片吧,实际效果可以下载源代码查看) (向上滑动) (向下滑动) (向左滑动) (向右滑动) 二.实现过程介绍 1.放置5个View (分别是上下左右中) @Override protected void onLayout(boolean changed, int l, int t, int r,

POJ1958 Strange Towers of Hanoi --- 递推【n盘m塔Hanoi塔问题】

POJ1958 Strange Towers of Hanoi Sol: n盘4塔问题可以分为3步: 1.以4塔模式移走i个盘. 2.以3塔模式将剩余n-i个盘移至第4塔. 3.以4塔模式将第一步中的i个盘移至第4塔. 我们用\(d[i]\)表示在3塔模式下移i个盘的最小步数,\(f[i]\)表示在4塔模式下移i个盘的最小步数. 递推式:\(f[i]=\min_{1\leq j < i}(2*f[j]+d[i-j])\) EX 本题可以拓展至n盘m塔问题. \(f[i][j]\)表示在i塔模式下

【转载】IDEA:放置型塔防备忘录

下周开始做原型了,我需要再次细细的整理一遍设计思路,确保每一个设计都能为了我所追求的玩家体验添砖加瓦,而不是互相打架.同时本文还能提供最原始的VISION,待到将来开发万一陷入泥淖,翻出此文来可以起到大抽自己嘴巴,醍醐灌顶的功效,让自己记起当初到底是要做个什么玩意,这是相当相当相当重要的,因为在历时颇长的开发过程中往往会迷失,而这是开发游戏的大忌.第三,本文提供最小可行版本的核心设计,有了本文的东西游戏就应该能跑得起来了,我最恨后来加入一大堆乱七八糟的东西使游戏变得臃肿而又丑陋,一眼看去不知道是

[038] 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应

微信5.0发布 2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主要包括: 1)运营主体为组织,可选择成为服务号或者订阅号: 2)服务号可以申请自定义菜单: 3)使用QQ登录的公众号,可以升级为邮箱登录: 4)使用邮箱登录的公众号,可以修改登录邮箱: 5)编辑图文消息可选填作者: 6)群发消息可以同步到腾讯微博. 其中,大家议论最多的当属前两条,就是关于帐号类型和自定义菜单的更新,我这里做几点补充说明: 1)目前公众号类型分为两种:服务号和订阅号,8月5日

自定义菜单用例

2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主要包括: 运营主体为组织,可选择成为服务号或者订阅号: 服务号可以申请自定义菜单: 使用QQ登录的公众号,可以升级为邮箱登录: 使用邮箱登录的公众号,可以修改登录邮箱: 编辑图文消息可选填作者: 群发消息可以同步到腾讯微博. 其中,大家议论最多的当属前两条,就是关于帐号类型和自定义菜单的更新,我这里做几点补充说明: 目前公众号类型分为两种:服务号和订阅号,8月5日平台更新后所有的帐号默认为订阅号,有一次转换