2024-11-19 05:57:46 +03:00

162 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Свойства и методы UI элементов
Обращение к UI элементов в скриптах произодится через экземпляр Document
(переменная document) по id, указанному в xml.
Пример: вывод в консоль свойства pos элемента с id: "worlds-panel":
```lua
print(document["worlds-panel"].pos)
-- или
local worldsPanel = document["worlds-panel"]
print(worldsPanel.pos)
```
Id элементов глобальны для документа, то есть worlds-panel может находиться как в корневом элементе,
так и в многократно вложенном контейнере.
Id элемента не может быть изменен из скрипта.
В таблицах далее будут использоваться сокращенные описания типов, такие как:
- vec2 - массив из двух дробных чисел.
- ivec2 - массив из двух целых чисел.
- rgba - массив из четырех дробных чисел в диапазоне `[0..255]` обозначающий RGBA состовляющие цвета.
Методы элементов, согласно особенностям ООП в Lua вызываются с использованием оператора `:` вместо `.`
Например:
```lua
document["worlds-panel"]:clear()
```
## Общие свойства и методы
Свойства, относящиеся ко всем элементам:
| Название | Тип | Чтение | Запись | Описание |
| ------------- | ------ | ------ | ------ | ----------------------------------------- |
| id | string | да | *нет* | идентификатор элемента |
| pos | vec2 | да | да | позиция элемента внутри контейнера |
| wpos | vec2 | да | да | позиция элемента в окне |
| size | vec2 | да | да | размер элемента |
| interactive | bool | да | да | возможность взаимодействия с элементом |
| enabled | bool | да | да | визуально обозначаемая версия interactive |
| visible | bool | да | да | видимость элемента |
| focused | bool | да | да | фокус на элементе |
| color | rgba | да | да | цвет элемента |
| hoverColor | rgba | да | да | цвет при наведении |
| pressedColor | rgba | да | да | цвет при нажатии |
| tooltip | string | да | да | текст всплывающей подсказки |
| tooltipDelay | float | да | да | задержка всплывающей подсказки |
| contentOffset | vec2 | да | *нет* | смещение содержимого |
Общие методы элементов:
| Метод | Описание |
| ------------------- | ----------------------------------------------------------------------- |
| moveInto(container) | перемещает элемент в указанный контейнер (указывается элемент, а не id) |
| destruct() | удаляет элемент |
## Контейнеры
Общие для контейнеров методы (элементы: container, panel, button, pagebox):
| Метод | Описание |
| ------------------------------- | ------------------------------------------------------------------------------------------- |
| clear() | очищает контент |
| add(xml) | добавляет элемент, создавая его по xml коду. Пример: `container:add("<image src='test'/>")` |
| setInterval(interval, callback) | назначает функцию на повторяющееся выполнение с заданным в миллисекундах интервалом |
## Текстовое поле (textbox)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| ----------- | ------ | ------ | ------ | ---------------------------------------------------------------------- |
| text | string | да | да | введенный текст или заполнитель |
| placeholder | string | да | да | заполнитель (используется если ничего не было введено) |
| hint | string | да | да | текст, отображаемый, когда ничего не введено |
| caret | int | да | да | позиция каретки. `textbox.caret = -1` установит позицию в конец текста |
| editable | bool | да | да | изменяемость текста |
| multiline | bool | да | да | поддержка многострочности |
| lineNumbers | bool | да | да | отображение номеров строк |
| textWrap | bool | да | да | автоматический перенос текста (только при multiline: "true") |
| valid | bool | да | нет | является ли введенный текст корректным |
| textColor | vec4 | да | да | цвет текста |
Методы:
| Метод | Описание |
| ------------------------- | -------------------------------------------- |
| paste(text: str) | вставляет указанный текст на позицию каретки |
| lineAt(pos: int) -> int | определяет номер строки по позиции в тексте |
| linePos(line: int) -> int | определяет позицию начала строки в тексте |
## Ползунок (trackbar)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| ---------- | ----- | ------ | ------ | ---------------------------- |
| value | float | да | да | выбранное значение |
| min | float | да | да | минимальное значение |
| max | float | да | да | максимальное значение |
| step | float | да | да | шаг деления |
| trackWidth | float | да | да | ширина управляющего элемента |
| trackColor | rgba | да | да | цвет управляющего элемента |
## Меню (pagebox)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| -------- | ------ | ------ | ------ | ---------------- |
| page | string | да | да | текущая страница |
Методы:
| Метод | Описание |
| ------- | ------------------------------------------ |
| back() | переключает на прошлую страницу |
| reset() | сбрасывает страницу и историю переключений |
## Отметка (checkbox)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| -------- | ---- | ------ | ------ | ----------------- |
| checked | bool | да | да | состояние отметки |
## Кнопка (button)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| -------- | ------ | ------ | ------ | ------------ |
| text | string | да | да | текст кнопки |
## Метка (label)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| -------- | ------ | ------ | ------ | ----------- |
| text | string | да | да | текст метки |
## Изображение (image)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| -------- | ------ | ------ | ------ | --------------------- |
| src | string | да | да | отображаемая текстура |
## Inventory (inventory)
Свойства:
| Название | Тип | Чтение | Запись | Описание |
| --------- | --- | ------ | ------ | ----------------------------------------- |
| inventory | int | да | да | id инвентаря, к которому привязан элемент |