LogoArcartX Doc
UI篇

控件变量以及函数

控件变量以及函数

不相信自己的人总是在说谎。

控件变量以及函数

  • 这里列出控件中可用的Shimmer函数以及控件对象自身的变量。

变量

固有变量

  • type 控件类型(固定值无法修改)
  • actions 触发器字典[字典类型]
  • dragX 当前X轴被拖动距离[数字类型](可赋值,但是应当是数字类型)
  • dragY 当前Y轴被拖动距离[数字类型](可赋值,但是应当是数字类型)
  • meta 元数据[字典类型]

动态变量

  • 我记得在控件结构中提到了,属性是可以自己命名创建的。
  • 比如下面这个配置:
background:
    type: texture
    attribute:
      point: ~middle_center
      width: 1000
      height: 500
      normal: ~AXLoginView/background.png
      abcd: "~我是一条自定义属性"
  • 这个时候这个控件可访问的变量包含attribute块下所有的值。
  • 也就是abcd这个值,可以通过self.abcd来访问或赋值。
  • 其余变量同理,比如width 可以通过self.width来访问或赋值。
  • 当然,没有在这个块里面声明的值也可以赋值访问,比如self.a = 10

元素

  • 通过控件对象自身,可通过元素访问语法来获取子级控件对象
  • 比如我们获取子级的button控件,则可以用self['button']来访问。

函数

parent()

  • 获取控件父级(如果是顶层控件返回的是UI对象)
  • 参数:无
  • 返回值:UI 或 控件
  • 调用示例
self.parent()

childrenCount()

  • 获取子级控件数量(仅限子级,孙级以及以上不包含)
  • 参数:无
  • 返回值:数字类型
  • 调用示例
self.childrenCount()

remove()

  • 移除当前控件
  • 该语句不应在进行copy操作后立即调用
  • 参数:无
  • 返回值:无
  • 调用示例
self.remove()

setDragXRatio(value)

  • 设置X轴拖动比率
  • 参数value(比率,数字类型)
  • 返回值:无
  • 调用示例
self.setDragXRatio(0.5)

setDragYRatio(value)

  • 设置Y轴拖动比率
  • 参数value(比率,数字类型)
  • 返回值:无
  • 调用示例
self.setDragYRatio(0.5)

getDragXRatio()

  • 获取X轴拖动比率
  • 参数:无
  • 返回值:数字类型
  • 调用示例
self.getDragXRatio()

getDragYRatio()

  • 获取Y轴拖动比率
  • 参数:无
  • 返回值:数字类型
  • 调用示例
self.getDragYRatio()

copy(name)

  • 复制当前控件,并命名为name,调用后即刻添加至当前层级中
  • 参数name(复制后的控件名称,字符串类型)
  • 返回值:控件对象
  • 调用示例
self.copy("newControl")

clear()

  • 清除当前控件的所有子级控件
  • 参数:无
  • 返回值:无
  • 调用示例
self.clear()

getStackWidth()

  • 获取当前控件的堆叠宽度(仅限HStack)
  • 参数:无
  • 返回值:数字类型
  • 调用示例
self.getStackWidth()

getStackHeight()

  • 获取当前控件的堆叠高度(仅限VStack)
  • 参数:无
  • 返回值:数字类型
  • 调用示例
self.getStackHeight()

getSlotItemStack()

  • 获取当前控件的物品(仅限Slot)
  • 参数:无
  • 返回值:物品对象
  • 调用示例
self.getSlotItemStack()

getItemValueSum(key)

  • 获取整个UI中和当前控件中物品相同的槽位的物品量总和(当前控件数量不计入其中)用于做图纸插件的UI显示材料(仅限Slot)
  • 参数key(物品键,字符串类型)
  • 返回值:数字类型
  • 调用示例
self.getItemValueSum("exampleKey")

getItemText(key)

  • 获取当前控件的物品文本值,比如有一行lore是xxx: abc,该函数用于获取冒号后面的内容(仅限Slot)
  • 参数key(键内容,字符串类型)
  • 返回值:字符串类型
  • 调用示例
self.getItemText("exampleKey")

setContent(content)

  • 设置文本框的内容(仅限TextBox | ChatTextBox)
  • 参数content(内容,字符串类型)
  • 返回值:无
  • 调用示例
self.setContent("exampleContent")

getContent()

  • 获取文本框的内容(仅限TextBox | ChatTextBox)
  • 参数:无
  • 返回值:字符串类型
  • 调用示例
self.getContent()

insert(text)

  • 在当前指针位置插入文字(仅限TextBox | ChatTextBox)
  • 参数test(插入的内容,字符串类型)
  • 返回值:无
  • 调用示例
self.insert("exampleText")

setFocus(value)

  • 设置当前控件是否获取焦点(仅限TextBox | ChatTextBox)
  • 参数value(布尔类型,true表示获取焦点,false表示失去焦点)
  • 返回值:无
  • 调用示例
self.setFocus(true)

isHovered()

  • 获取控件此时是否鼠标悬停
  • 参数:无
  • 返回值:布尔类型
  • 调用示例
self.isHovered()

setIconItem(item)

  • 设置控件的图标物品(仅限Slot 且类型为Icon)
  • 参数item(物品JSON,字符串类型, 这个值需要序列化物品发送)
  • 返回值:无
  • 调用示例
self.setIconItem('{"id": "minecraft:stone","Count":1}')

getSameCount()

  • 获取当前容器中,有多少和当前Slot相同的物品数量(仅限Slot)
  • 参数:无
  • 返回值:数字类型
  • 调用示例
self.getSameCount()