UI API额外的客户端APIExtraUIGetInputVectorHideHudGUIHideJumpGuiHideNeteaseStoreGuiHideSlotBarGuiHideSneakGuiHideSwimGuiHideWalkGuiSetInputModeSetResponseSetTextDefaultFont界面节点的APIScreenNodeAddTouchEventHandlerCloneGetAllChildrenPathGetChildrenNameGetPositionGetSizeGetTextColorRemoveComponentSetCrossHairSetEditTextMaxLengthSetGridDimensionSetPositionSetRemoveSetScreenVisibleSetSizeSetSpriteSetSpriteBrightSetSpriteGraySetStackGridCountSetTextSetTextColorSetTextFontSizeSetTouchEnableSetUiModelSetVisible
UI API
下面是UI的一些API接口文档,关于UI的使用请参照《UI使用文档.md》。
下面的文档分为两个部分,一部分是在extraClientApi中,另一部分是ScreenNode基类的成员函数。
额外的客户端API
extraClientApi中界面的一些有用的API接口函数。
ExtraUI
GetInputVector
描述
返回值为当前玩家的操作的移动向量
返回值
数据类型 说明 tuple(x, y) 返回值分别为x轴和y轴的向量值,取值范围为[0, 1],以操作中心为原点,up上和left左为正方向,down下和right右为负方向 示例
xxxxxxxxxx
import extraClientApi as clientApi
inputVector = clientApi.GetInputVector()
HideHudGUI
描述
隐藏HUD游戏界面的游戏原生UI
参数
参数名 数据类型 说明 isHide boolean True为隐藏原生HUD,False为恢复显示 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.HideHudGUI(True)
HideJumpGui
描述
隐藏游戏中右下角的跳跃按钮
参数
参数名 数据类型 说明 isHide boolean 是否隐藏,True为隐藏,False为显示 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.HideJumpGui(True)
HideNeteaseStoreGui
描述
隐藏游戏中的网易商店按钮
参数
参数名 数据类型 说明 isHide boolean 是否隐藏,True为隐藏,False为显示 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.HideNeteaseStoreGui(True)
HideSlotBarGui
描述
隐藏游戏中底部中间的物品栏界面
参数
参数名 数据类型 说明 isHide boolean 是否隐藏,True为隐藏,False为显示 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.HideSlotBarGui(True)
HideSneakGui
描述
隐藏游戏中左下角方向键的中心处潜行按钮
参数
参数名 数据类型 说明 isHide boolean 是否隐藏,True为隐藏,False为显示 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.HideSneakGui(True)
HideSwimGui
描述
隐藏游戏中的浮潜按钮
参数
参数名 数据类型 说明 isHide boolean 是否隐藏,True为隐藏,False为显示 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.HideSwimGui(True)
HideWalkGui
描述
隐藏游戏中右上角的移动类型按钮
参数
参数名 数据类型 说明 isHide boolean 是否隐藏,True为隐藏,False为显示 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.HideWalkGui(True)
SetInputMode
描述
设置UI的输入模式,输入模式影响是否可以同时控制游戏操作。
参数
参数名 数据类型 说明 mode int 取值为0或1,0为HUD的操作模式,1为UI的操作模式。 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.SetInputMode(1)
SetResponse
描述
设置原生UI是否响应,详见UI文档
参数
参数名 数据类型 说明 response boolean 点击UI时是否屏蔽下层敲击方块/攻击实体 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.SetResponse(False)
SetTextDefaultFont
描述
设置Label文本框的默认字体,需要在创建某一需要指定默认字体的界面之前调用该接口,防止出现没有汉字时是MC字体,有汉字时是汉字字体。
参数
参数名 数据类型 说明 font str 字体的取值范围[default, rune, unicode, smooth],其中default是默认MC字体,unicode为中文字体。 返回值
空
示例
xxxxxxxxxx
import extraClientApi as clientApi
clientApi.SetTextDefaultFont("unicode")
界面节点的API
ScreenNode的一些有用的函数,界面Node节点的获取方式在《UI使用文档.md》中有详细说明。
xxxxxxxxxx
import client.extraClientApi as clientApi
uiNode = clientApi.GetUI("myModName", "myUIName")
假设下文中的函数,uiNode为获取到的ScreenNode继承类,调用的UI界面是按下面的节点树组织结构的
xxxxxxxxxx
my_namespace
| main
| image
| image_button
| text1
| panel
| text2
| panel2
| text_edit_box
ScreenNode
AddTouchEventHandler
描述
设置按钮的回调函数
参数
参数名 数据类型 说明 componentPath str 为从main节点开始,被删除控件路径 callbackFunc function 回调函数,必须是UI的类函数 args dict 默认为None,详细说明请见备注。 返回值
空
示例
xxxxxxxxxx
class BattleUI(ScreenNode):
def __init__(self, namespace, name, param):
ScreenNode.__init__(self, namespace, name, param)
print "ui init"
#回调函数
def OnButtonTouch(self, args):
touchEventEnum = clientApi.GetMinecraftEnum().TouchEvent
#按钮事件
touchEvent = args["TouchEvent"]
#点击坐标
touchPos = args["TouchPosX"], args["TouchPosY"]
#触控在按钮范围内弹起时
if touchEvent == touchEventEnum.TouchUp:
print "============= touch ========= up"
#按钮按下时
elif touchEvent == touchEventEnum.TouchDown:
print "============= touch ========= down"
#触控在按钮范围外弹起时
elif touchEvent == touchEventEnum.TouchCancel:
print "============= touch ========= cancel"
#按下后触控移动时
elif touchEvent == touchEventEnum.TouchMove:
print "============= touch ========= move"
def Create(self):
#注册按钮响应的回调函数
self.AddTouchEventHandler("/panel/test_btn", self.OnButtonTouch, {"isSwallow":True})
备注
AddTouchEventHandler参数args说明:
关键字 数据类型 说明 isSwallow bool 默认为True, 按钮是否吞噬事件;或为Ture时,点击按钮时,点击事件不会穿透到世界。如破坏方块、镜头转向不会被响应
若要监听TouchMove事件,button的json里is_handle_button_move_event必须设置为true 且 button_mappings必须设置为[]。json可以参考《3-4 UI说明文档》控件介绍中的Image Button。args参数解释如下:
xxxxxxxxxx
| 参数 | 类型 | 解释 |
| ----------------- | ----- | ------------------------------------------------------------ |
| #collection_name | str | 按钮所属的集合名称 |
| #collection_index | int | 按钮在集合所属的集合序号 |
| ButtonState | int | 按钮的状态:Up为0,Down为1,默认是-1,建议使用New |
| TouchEvent | int | 按钮的状态新版本:Up为0,Down为1,Cancel为3,Move为4,默认是-1 |
| PrevButtonDownID | str | 上一个被点击Down的按钮的ID,如果没有取值为"-1" |
| TouchPosX | float | 按钮被点击时屏幕上的UI坐标X值 |
| TouchPosY | float | 按钮被点击时屏幕上的UI坐标Y值 |
| ButtonPath | str | 被点击的按钮的ComponentPath |
Clone
描述
克隆一个已有的控件,修改它的名称,并将它挂接到指定的父节点上。
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 parentPath str 为从main节点开始,父节点的控件路径 newName str 为被克隆的控件名称,因此克隆完了之后新控件的父节点路径为parentPath 返回值
空
示例
xxxxxxxxxx
# we want to clone text2 named text3 on panel
parentPath = "/panel"
text2Path = "/panel/text2"
text3Name = "text3"
uiNode.Clone(text2Path, parentPath, text3Name)
GetAllChildrenPath
描述
获取所有子节点的路径list
参数
参数名 数据类型 说明 parentPath str 为从main节点开始,父节点的控件路径 返回值
数据类型 说明 list 返回父节点下的子节点的路径,会递归返回所有子节点,若节点无子节点,返回空list 示例
xxxxxxxxxx
# get panel's all children path
node.GetAllChildrenPath("/panel")
GetChildrenName
描述
获取子节点的名称list
参数
参数名 数据类型 说明 parentPath str 为从main节点开始,父节点的控件路径 返回值
数据类型 说明 list 返回父节点下的子节点的名称,不会递归返回所有子节点,若节点无子节点,返回空list 示例
xxxxxxxxxx
# get panel's children name
node.GetChildrenName("/panel")
GetPosition
描述
获取控件相对父节点的坐标
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 返回值
数据类型 说明 tuple(x,y) 该控件相对父节点的坐标信息,x为横轴,y为纵轴 示例
xxxxxxxxxx
# we want to get text2 position
text2Path = "/panel/text2"
textPosition = uiNode.GetPosition(text2Path)
GetSize
描述
获取控件的大小
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 返回值
数据类型 说明 tuple(x,y) 该控件的大小信息,x为横轴,y为纵轴 示例
xxxxxxxxxx
# we want to get text2 size
text2Path = "/panel/text2"
text2Size = uiNode.GetSize(text2Path)
GetTextColor
描述
获取Label文本颜色
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 返回值
数据类型 说明 tuple(r,g,b,a) 获取文本的颜色信息(r, g, b, a), 取值[0, 1] 示例
xxxxxxxxxx
# we want to get text2 color
text2Path = "/panel/text2"
text2Color = uiNode.GetTextColor(text2Path)
RemoveComponent
描述
动态删除某一控件
参数
参数名 数据类型 说明 componentPath str 为从main节点开始,被删除控件路径 parentPath str 为从main节点开始,父节点的控件路径 返回值
空
示例
xxxxxxxxxx
# we want to remove text2
text2Path = "/panel/text2"
parentPath = "/panel"
uiNode.RemoveComponent(text2Path, parentPath)
SetCrossHair
描述
设置屏幕中心的十字是否显示
参数
参数名 数据类型 说明 visible bool True为隐藏十字光标,False为恢复 返回值
空
示例
xxxxxxxxxx
# we want to hide cross hair
uiNode.SetCrossHair(True)
SetEditTextMaxLength
描述
设置输入框的最大输入长度
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 maxLength int 输入框可输入的最大长度,取值[0, +∞) 返回值
空
示例
xxxxxxxxxx
# we want to set text_edit_box max input length 10
editTextPath = "/panel2/text_edit_box"
uiNode.SetEditTextMaxLength(editTextPath, 10)
SetGridDimension
描述
设置Grid控件的大小
参数
参数名 数据类型 说明 componentPath str 为从main节点开始,Grid控件的路径 dimension tuple(x,y) x,y均为int类型,设置网格大小 返回值
空
示例
xxxxxxxxxx
# we want change grid dimension
gridPath = "/grid1"
uiNode.SetGridDimension(gridPath, (2, 2))
SetPosition
描述
设置控件相对父节点的坐标
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 pos tuple(x,y) 该控件相对父节点的坐标信息,x为横轴,y为纵轴 返回值
空
示例
xxxxxxxxxx
# we want to set text2 position
text2Path = "/panel/text2"
pos = (10, 10)
uiNode.SetPosition(text2Path, pos)
SetRemove
描述
删除本界面节点
返回值
空
示例
xxxxxxxxxx
# we want to remove this screen
uiNode.SetRemove()
SetScreenVisible
描述
设置是否显示本界面
参数
参数名 数据类型 说明 visible boolean False为隐藏该界面,True为显示该界面 返回值
空
示例
xxxxxxxxxx
# 我们隐藏当前UI的界面
uiNode.SetScreenVisible(False)
SetSize
描述
设置控件的大小
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 size tuple(x,y) 该控件的大小信息,x为横轴,y为纵轴 返回值
空
示例
xxxxxxxxxx
# we want to set text2 size
text2Path = "/panel/text2"
text2Size = (10, 10)
uiNode.SetSize(text2Path, text2Size)
SetSprite
描述
给图片空间换指定贴图
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 texturePath str 贴图的路径,需要从resource_pack下面的textures目录开始 返回值
空
SetSpriteBright
描述
给图片设置亮度,比直接SetSprite一张图片效率要高
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 bright int 取值为[-1, 0, 1]三个值,分别代表着[暗, 正常,亮]三个效果 返回值
空
示例
xxxxxxxxxx
# we want set image highlight
imagePath = "/image"
uiNode.SetSpriteBright(imagePath, 1)
SetSpriteGray
描述
给图片空间置灰,比直接SetSprite一张灰图片效率要高
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 gray bool True为将图片置灰,False为恢复原色 返回值
空
示例
xxxxxxxxxx
# we want set image gray
imagePath = "/image"
uiNode.SetSpriteGray(imagePath, True)
SetStackGridCount
描述
设置StackGrid控件的大小
参数
参数名 数据类型 说明 componentPath str 为从main节点开始,Grid控件的路径 count int 设置StackGrid的内容数量 返回值
空
示例
xxxxxxxxxx
# we want change stackgrid count
stackgridPath = "/stack_grid1"
uiNode.SetStackGridCount(stackgridPath, 3)
SetText
描述
设置Label的文本信息
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 text str 文本的内容,可以支持样式代码(§可以设置文字的颜色、格式等,该种用法更加灵活多变) 返回值
空
示例
xxxxxxxxxx
# we want to set text2 content
text2Path = "/panel/text2"
text = "Hello World!"
uiNode.SetText(text2Path, text)
SetTextColor
描述
设置Label文本的颜色
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 color tuple(r,g,b,a) 文本的颜色信息(r, g, b, a),取值[0, 1] 返回值
空
示例
xxxxxxxxxx
# we want to set text2 green
text2Path = "/panel/text2"
color = (0, 1, 0, 0.8)
uiNode.SetTextColor(text2Path, color)
SetTextFontSize
描述
设置Label中文本字体的大小
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 scale float label的font_size的作用是Label中的默认字体大小,取值有限为[small normal large],这个scale是在这个默认字体的基础上进行缩放字体大小,默认字体大小为1.0 返回值
空
示例
xxxxxxxxxx
# set text font size
text2Path = "/panel/text2"
uiNode.SetTextFontSize(text2Path, 0.8)
SetTouchEnable
描述
设置控件是否可点击交互
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 enable bool False为不响应,True为恢复响应 返回值
空
示例
xxxxxxxxxx
# we want to set image_button unable
imageButtonPath = "/image_button"
uiNode.SetTouchEnable(imageButtonPath, False)
SetUiModel
描述
删除本界面节点
参数
参数名 数据类型 说明 componentPath str 为从main节点开始,被删除控件路径 modelName str 骨骼模型的名称 返回值
空
示例
xxxxxxxxxx
# we want change model
imagePath = "/paper_doll0"
uiNode.SetUiModel(imagePath, 'saber')
SetVisible
描述
根据控件路径选择是否显示某控件
参数
参数名 数据类型 说明 componentPath str 为从main节点开始的控件路径 visible boolean False为隐藏该控件,True为显示该控件 返回值
空
示例
xxxxxxxxxx
# 我们隐藏panel下面的text2
text2Path = "/panel/text2"
uiNode.SetVisible(text2Path, False)