《CSOL大灾变》Mobile开发进度记录——武器购买界面设计
又到了休息日,有点时间继续这个移植游戏的开发。这次主要是关于武器系统模块的开发记录,关于CS以及CSOL的武器系统,它的购买菜单页面虽然谈不上复杂,但是也包含很多GUI元素,下面是CSOL其中的一个武器购买界面展示:

而玩过生化模式或大灾变的玩家都知道,在现在的生化模式和大灾变中的购买菜单跟上面列出的团队竞技模式的购买菜单不太一样,如下:

这是生化模式中的,虽然大体差不多。但是还是有细微不同之处,当然,我偷懒了,不想搞那么复杂的,所以,打开GUI设计器,整了个差不多的布局页面,如下:

我觉得对于移植到移动端上,这个购买菜单差不多就这样吧。左上角是一个ListBox,适配器需要在代码中实现,所以在GUI设计器只能只是一个布局区域占位。接下来更改ListBox的背景框样式(改为透明),注意,直接在GUI设计器修改ListBox的backGroundColor或backGroundImage是没用的,因为这修改的是ListBox的背景,而上面的灰色背景框是ListBox中的Panel元素,找到默认的ListBox控件xml,如下:

在这里可以很清楚的看到,panel的样式Id为#scrollpanel,修改方案有两种,一种是自定义一个ListBox控件(复制这里的代码,然后粘贴到一个自定义Control控件中,然后添加一个新样式,将panel的样式设置为我们的样式),另一个种就是覆盖Id为#scrollpanel的样式,这样做可以减少一些工作,但是这样么一来整个页面中其他使用了#scrollpanel样式的组件也会被替换为我们的样式,不过对于这个页面而言,只有ListBox中的panel使用了这个样式,所以对于这个页面无影响。
从controlDefinition中的style="nifty-listbox"表面,panel使用的#scrollpanel样式的全程id为nifty-listbox#scrollpanel。那么id为nifty-listbox样式放在哪个文件呢?答案是放在nifty默认black样式包中listbox包下的nifty-listbox-style.xml中。内容如下:

所以我们需要重载的样式是id为nifty-listbox#scrollpanel的样式,新增一个AlphaListBoxPanelStyle.xml,添加如下代码:

然后在GUI页面引入我们的style,注意,需要按顺序引入,先引入默认的,再引入我们自定义的,这样后面引入的就可以重载id重复的样式,如下:

最后写个测试程序,运行查看,效果如下:

可以看到,ListBox的默认背景框样式已经变成透明的了,但是你会发现按钮的文字没有显示出来,原因是我们使用了中文字体,在GUI设计器中可以正常显示,但是在加载游戏中时默认加载的字体样式不存在中文字符,所以无法显示中文。值得一提的是,SDK中提供了制作字体的功能,右键->新建GUI->字体文件即可,但是很遗憾,SDK自带的工具不足以创建中文字体,所以我们可以使用一个叫做“bmfont64.exe"的文件,然后可以按照这个教程去制作字体(https://blog.csdn.net/zhenyu5211314/article/details/85232936),需要注意bmfont64最好去官网下载最新的那个兼容64位win10的版本,其他版本均无法在win10 64位正常运行。
这里我们创建16大小和20大小的字体文件,然后引入到GUI布局器中(具体怎么引入,查看我的另一篇教程)。最后运行测试程序,可以看到:

接下来,实现weaponListBox的自定义Item和适配器,按照CSOL的武器选择清单,Item是一个水平布局,三个元素,最左边的是一个img,中间是一个Label,右边是一个img,如下:

关于如何制作自定ListBox Item或自定义Item参考我的另一篇文章,关于如何动态调整Item请查看我的另一篇文章(还没写呢哈哈)。那么,我们的自定义Item的样式,控件xml和适配器分别如下:



最后,初始化数据查看下效果,如下:

看着有模有样了。
测试下在游戏中的效果,如下:

移动端效果:

差不多就这样,接下来就是完成武器系统模块的代码逻辑了。
《CSOL大灾变》Mobile开发进度记录——武器购买界面设计的更多相关文章
- [课程设计]Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化)
Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅 ...
- Android开发1:基本UI界面设计——布局和组件
前言 啦啦啦~本学期要开始学习Android开发啦~ 博主在开始学习前是完完全全的小白,只有在平时完成老师要求的实验的过程中一步一步学习~从此篇博文起,博主将开始发布Android开发有关的博文,希望 ...
- jQuery mobile 开发问题记录
一.动态加载页面问题 1.存在这样一个页面布局: main.html 为主界面A,B为该页面中的三个page,其中A为splitview左部分页面,B为右半部页面 a1.html 为一个独立的页面 a ...
- [课程设计]Scrum 3.3 多鱼点餐系统开发进度(下单详细信息页面设计)
Scrum 3.3 多鱼点餐系统开发进度(下单详细信息页面设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点 ...
- Arduino单片机使用和开发问题记录(转)
源:Arduino单片机使用和开发问题记录 1.将程序上传到板子时Arduino IDE提示“avrdude: stk500_getsync(): not in sync: resp=0x00” 网上 ...
- 快速开发平台分享-UCML快速开发七种武器
传统的快速开发平台强调的是组件重用.构件重用,主要解决功能重用层面,一般提供了软件开发最常用的功能:表单设计.BPM(业务流程管理).报表.组织机构及权限等功能.但只有功能重用,没有过程重用,要么只能 ...
- Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】
2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...
- 团队高效率协作开发的秘密武器-APIDOC
团队高效率协作开发的秘密武器 1.前言 在团队协作开发中,不知道各位有没有遇到这样的问题: l 新人接手了项目代码,因没有项目文档,只能靠追踪路由,寻读代码分析业务逻辑 l 前端同学写好了页面,苦等后 ...
- iOS开发之记录用户登录状态
iOS开发之记录用户登录状态 我们知道:CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登陆状态.例如微信 ...
- [课程设计]Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计)
Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统 ...
随机推荐
- 浅谈Java线程池的概念、创建与执行
转': 浅谈Java线程池的概念.创建与执行 如果使用 newCachedThreadPool 线程池的实例: ExecutorService executor = Executors.newCa ...
- 【Java】BigDecimal
BigDecimal转int类型 BigDecimal a=new BigDecimal(12.88); int b=a.intValue(); System.out.println(b);//b=1 ...
- 下载接口时出现:Try to run this command from the system terminal. Make sure that you use the correct version of 'pip' installed for your Python interpreter located at 'D:\python\demo\venv\Scripts\...的错误
下载接口时出现:Try to run this command from the system terminal. Make sure that you use the correct version ...
- 【GENERAL FRAMEWORK】总框架——持续更新
引: 鉴于目前挖的坑较多,未防止某些即将长期更新的博文出现烂尾,特设此框架 1.蓝桥杯(完结) 1.[蓝桥杯单片机组]LED.蜂鸣器与继电器--138-573的外设操作 ...
- CSP202104-4校门外的树
`#include include include include include include include include include include include include us ...
- Python 堆、栈和队列详解
队列: 1.队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进 ...
- SpringMVC学习day03
第1个springmvc程序 这是根据狂神说视频和资料学习的,用于加强自己的记忆 入门学习 1. 步骤: 1.新建一个Moudle , springmvc-02-hello , 添加web的支持! 2 ...
- ORACLE 失效索引重建
-- 获取失效索引 SELECT * FROM USER_INDEXES WHERE TABLE_NAME IN ('表名') AND STATUS = 'UNUSABLE'; -- 重建语法alte ...
- 问题记录_IDEA版本2021.2.3_debug时变量显示不全(只显示线程附近部分)
问题记录_IDEA版本2021.2.3_debug时变量显示不全(只显示线程附近部分) 起因 把IDEA的版本从2019升级到了2021.2.3,在debug的时候发现变量的值能看到的很少,并不像20 ...
- php textarea根据回车转换成数组
$val是textarea文本框的内容 假如是:张三/32岁/男 李四/28岁/男 $arr=explode("\n",$val); $arr2 = array(); foreac ...