# Свойства и методы 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("")` | | 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 инвентаря, к которому привязан элемент |