В Babylon.js для создания интерактивных и динамичных приложений часто
используются различные формы ввода данных. Одними из таких элементов
являются InputText и InputPassword, которые
позволяют пользователям вводить текстовую информацию в интерфейсе. Эти
элементы широко используются в различных сценариях: от простых форм до
сложных веб-приложений, требующих пользовательского ввода.
Элемент InputText представляет собой текстовое поле, в
которое пользователь может вводить символы. Он является частью
библиотеки Babylon.js, но в контексте пользовательского интерфейса (GUI)
работает через систему AdvancedDynamicTexture. Для создания
такого элемента необходимо сначала создать
AdvancedDynamicTexture для сцены, а затем добавить на неё
текстовое поле.
// Создание сцены
var scene = new BABYLON.Scene(engine);
// Создание AdvancedDynamicTexture для сцены
var advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI("UI", true, scene);
// Создание элемента InputText
var inputText = new BABYLON.GUI.InputText();
inputText.width = "200px";
inputText.height = "40px";
inputText.color = "white";
inputText.background = "black";
inputText.fontSize = 20;
inputText.text = "Введите текст...";
// Добавление InputText на экран
advancedTexture.addControl(inputText);
В этом примере создается текстовое поле с размерами 200x40 пикселей, черным фоном и белым текстом. Размер шрифта установлен на 20 пикселей, и в поле по умолчанию отображается текст “Введите текст…”.
После создания поля ввода важно научиться извлекать данные, введенные
пользователем. Для этого можно использовать свойство text
объекта InputText.
var userInput = inputText.text;
console.log(userInput); // Вывод введенного текста в консоль
Это позволяет получить строку, которую пользователь ввел в поле, и использовать её в дальнейшем, например, для обработки на сервере или в логике приложения.
Аналогично полю ввода текста, Babylon.js предоставляет элемент
InputPassword, который скрывает символы, вводимые
пользователем, для обеспечения конфиденциальности. Этот элемент работает
по аналогии с InputText, но имеет дополнительную настройку,
которая изменяет отображение вводимых символов на звездочки.
// Создание элемента InputPassword
var inputPassword = new BABYLON.GUI.InputText();
inputPassword.width = "200px";
inputPassword.height = "40px";
inputPassword.color = "white";
inputPassword.background = "black";
inputPassword.fontSize = 20;
inputPassword.password = true; // Устанавливаем поле как InputPassword
inputPassword.text = "Введите пароль...";
// Добавление InputPassword на экран
advancedTexture.addControl(inputPassword);
В этом примере создается поле для ввода пароля, где символы будут скрыты, и вместо них отобразятся звездочки.
true, вводимые
символы будут скрыты.Как и в случае с InputText, для получения данных из
InputPassword используется свойство text.
Несмотря на то, что символы скрыты, данные, введенные пользователем,
можно получить в полном объеме.
var password = inputPassword.text;
console.log(password); // Вывод пароля в консоль
В реальных приложениях часто возникает необходимость проверять введенные данные. Например, необходимо убедиться, что пользователь ввел правильный формат данных или соблюдены определенные ограничения.
inputText.onTextChangedObservable.add(function() {
if (inputText.text.length < 5) {
inputText.color = "red"; // Если текст меньше 5 символов, цвет текста станет красным
} else {
inputText.color = "white"; // Если текст длиной 5 и более символов, цвет текста станет белым
}
});
В этом примере добавляется обработчик события
onTextChangedObservable, который отслеживает изменения в
поле ввода и меняет цвет текста в зависимости от его длины.
Одним из полезных аспектов работы с InputText и
InputPassword является возможность обрабатывать события.
Например, можно реагировать на изменение текста или получение
фокуса.
inputText.onFocusObservable.add(function() {
console.log("Поле ввода получило фокус");
});
inputText.onBlurObservable.add(function() {
console.log("Поле ввода потеряло фокус");
});
Эти события могут быть полезны, если необходимо выполнять дополнительные действия, такие как подсветка поля или валидация ввода.
Благодаря широким возможностям стилизации, Babylon.js позволяет глубоко настраивать внешний вид элементов управления. С помощью свойств, таких как fontFamily, textHorizontalAlignment, textVerticalAlignment, можно кастомизировать отображение текста, а с помощью свойств, отвечающих за цвет фона, рамки и прочее, можно создать визуально привлекательные и функциональные элементы.
inputText.fontFamily = "Arial";
inputText.textHorizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_CENTER;
inputText.textVerticalAlignment = BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER;
inputText.borderColor = "green";
inputText.borderThickness = 2;
Элементы InputText и InputPassword
предоставляют удобные и гибкие инструменты для создания форм ввода
данных в приложениях, использующих Babylon.js. Они позволяют не только
вводить текст и пароли, но и взаимодействовать с ними через события,
изменять стили и выполнять валидацию. Эти возможности делают их важной
частью интерфейса любого интерактивного приложения.