第一章 - 高级GUI组件介绍
注意:本章建议配合
https://www.vexview.top/docs/index.html顺便查看一下相关组件的构造方法。
除了基础篇介绍的几个组件外,在 lk.vexview.gui.components 包下,还包含着非常丰富的组件:
- VexCheckBox - 勾选框组件
- VexTextField - 文本框组件
- VexSlot - 物品框组件
- VexPlayerDraw - 玩家模型绘制
我们来看看官方JavaDoc文档对于这些类的描述:
VexCheckBox:
VexCheckBox 勾选框,支持动态获取勾选状态, 只有两种勾选状态(未选/已选)
在代码中实现大概是这样的:
它类似于VexButton按钮组件,也有两种状态,你可以设置它的默认勾选状态,也就是最后的那个参数。
当然,仅仅是显示肯定是无法达到我们所希望的那样,我们需要判断玩家操作的勾选状态,所以说我们就需要用到OpenedVexGui进行当前Gui的动态操作(动态操作在下一章)
VexTextField:
VexTextField 自定义文本框 允许玩家自由输入文本内容,允许限制最大输入字数,可以实时获取输入的文本内容。
这个组件的用处就非常之大,我们知道,如果使用箱子GUI显示界面,是完全没办法让玩家实时输入内容的(只能靠一些带有文本框的原版容器替代,比如网易的嗨皮咳嗽就是用的铁毡的界面当做输入框)这样的实现的确很灵活,但是美观性就不尽人意了,而VexView直接提供文本框组件添加到GUI中,弥补了很多的不足。
同上,此组件需要动态操作才能完全发挥它的能力!
VexSlot:
物品槽 继承VexComponents类,属于组件,在GUI中生成一个固定大小的物品槽(18*️️️️18)
此组件并不是在VexView诞生初期就添加的,直到VexView 1.8版本问世后才被加入,可见操作难度是要比其他组件困难的。不过VexView已经帮助各位开发者简化了很多工序,现在的VexSlot可以直接被添加入VexGui中,可以预设物品,操作起来也非常方便。
使用此类需要注意的是:
参数:
id - 物品槽的ID(一个GUI的物品槽ID必须从0开始按顺序依次增大,不同物品槽不能相同)
这是关键,物品槽的id必须从0开始按顺序增加,否则就嘿嘿嘿...
此外,在VexGui中的VexSlot是无法进行拖拽操作的!想要实现拖拽效果,InventoryGui将会是你的不二之选,它会在第三章介绍。
VexPlayerDraw:
VexPlayerDraw - 玩家实体绘制 继承VexComponents类,属于组件,在GUI中生成一个玩家实体绘制(就是那种玩家模型,脑壳跟着鼠标动的那种)
如果你还是没看懂这个到底是个什么组件,我就用一句话来描述吧:玩家生存模式背包里面的那个第二人称样貌。
不过这个组件目前还有一定的瑕疵,官方建议是仅用作显示玩家自己的模型,待VexView更加成熟的一天到来,它说不定能够显示生物模型甚至是自定义模型。
小故事:之前在VexView开发群听到一个很不错的创意,既然组件都这么齐全,直接自己伪造个E键背包吧,可以穿戴更多RPG的物品,我仔细一想,的确,配合 InventoryGui 完全可以做到!
滚动列表 VexScorllingList 组件emmm,说到这个组件,它也是很晚才被加入,在VexView2.0版本中,它以一个全新的交互方式和所有人见面。滚动列表中的各种操作绝不输GUI,我们进行了非常多的测试、修改,才将其简化到易于理解和使用。说了这么多,那么,它到底是一个什么样的存在呢?
它可以让你的GUI看起来像这样:
通过鼠标滚轮或者向下拉动右边的滑块,就可以滚动显示列表里面的内容。
包括Minecraft客户端的一些设置界面、创造模式物品栏,都是滚动列表的实现。
官方JavaDoc对于它的介绍是这样的:
VexScrollingList 滚动列表等同于一个组件容器 类似于VexGui,它同样可以包含一些组件,需要 组件实现ScrollingListComponent接口。 一个Gui中只允许含有一个滚动列表。 需要注意的是,组件的坐标将以该滚动列表的左上角开始重新计算坐标,而不是Gui。
简而言之:它是一个能容纳其他组件的组件。
和GUI一样通过addComponent方法直接添加组件:
可以说它的使用非常方便。
介绍的好帮手 -> VexHoverText首先要声明,它不是组件!不知道这样你是否能理解:它是组件的组件(就像你有个身体,你的身体上还穿着洛丽塔...),HoverText能够为这个组件提供描述,它和物品描述是一样的,当你将鼠标放在物品上时,能够显示lore信息,它让VexView的Gui组件也能够这样显示信息,就像这样:
它的官方JavaDoc介绍为:
添加一个HoverText的方法也很简单:
所有实现了HoverTextComponent接口的组件,都可以添加一个HoverText
扩展型组件在包lk.vexview.gui.components.expand下,就是我们提供的扩展型组件,在本篇教程中,我们只进行大致介绍,如果有需要或是感兴趣的话可以在我们的JavaDoc查看具体用法:
- VexBase64Image - 以Base64形式直接传输的图片,直接读取输入流,存在传输大小限制,为了防止服务器的网络占用过高,非必须情况下不建议使用。
- VexClickableButton - 可点击型按钮,除了普通按钮具有的两种状态外,它还有不可点击状态(需要第三张贴图),不可点击状态下,玩家无法操作此按钮,此组件支持动态操作(设置可点击性)。
- VexColorfulTextField - 彩色文本框,允许自定义16进制颜色代码,甚至可以透明,用一张VexImage做底图实现自定义样式的文本框,其他用法和普通的文本框一致。
- VexGifImage - 顾名思义,它支持显示GIF图片,继承自VexImage,你甚至可以设置每一帧之间的播放间隔。
- VexSplitImage - 切割型图片,继承自VexImage,支持对一张图片的裁剪操作。
- VexMcImage - 它用于显示其他MOD或是原版的材质贴图,继承自VexSplitImage,支持图形切割,URL的填写方式不同于普通的图片,具体使用方法参见doc