Элемент <a-text> предназначен для отображения
текста в 3D-сценах A-Frame. Он является примитивом, который упрощает
создание текстовых объектов без необходимости вручную создавать меши и
материалы. Основное отличие <a-text> от стандартного
HTML-текста заключается в его интеграции с 3D-пространством, что
позволяет позиционировать, масштабировать и вращать текст в трех
измерениях.
valueАтрибут value задает текст, который будет отображаться.
Поддерживаются переносы строк с использованием \n.
Например:
<a-text value="Привет\nмир" position="0 2 -3"></a-text>
colorОпределяет цвет текста. Можно использовать стандартные CSS-названия цвета, HEX-коды или RGB. Пример:
<a-text value="Красный текст" color="#FF0000" position="0 1.5 -2"></a-text>
alignУправляет выравниванием текста относительно его позиции. Возможные
значения: left, center, right.
Это особенно важно при размещении текста рядом с объектами сцены.
<a-text value="Центрированный текст" align="center" position="0 1 -3"></a-text>
widthОпределяет ширину текстового блока. Если текст превышает заданную ширину, происходит автоматический перенос строк. Это позволяет контролировать читаемость текста в сцене.
<a-text value="Очень длинный текст, который нужно перенести на несколько строк" width="4" position="0 1 -2"></a-text>
fontПозволяет выбрать шрифт для текста. В A-Frame используются шрифты
формата .fnt, которые можно подключать через компонент
asset. Пример использования:
<a-assets>
<a-asset-item id="robotoFont" src="fonts/roboto.fnt"></a-asset-item>
</a-assets>
<a-text value="Текст с шрифтом Roboto" font="#robotoFont" position="0 1.5 -3"></a-text>
sideОпределяет, с какой стороны будет виден текст: front,
back, double. Значение double
используется для 3D-текста, который должен быть видим с обеих
сторон.
<a-text value="Двусторонний текст" side="double" position="0 1 -3"></a-text>
opacityПозволяет задать прозрачность текста, где 1 — полностью
непрозрачный, 0 — полностью прозрачный. Прозрачность
особенно полезна для создания эффектов наложения или выделения текста на
фоне сцены.
<a-text value="Полупрозрачный текст" opacity="0.5" position="0 2 -2"></a-text>
baselineУправляет вертикальным выравниванием текста. Возможные значения:
top, center, bottom. Особенно
важно при комбинировании нескольких текстовых объектов в одной
композиции.
<a-text value="Текст по центру" baseline="center" position="0 1 -3"></a-text>
Текст можно размещать в сцене точно так же, как 3D-объекты. Атрибут
position принимает вектор [x, y, z],
rotation задает ориентацию, а scale — размер
текста. Например:
<a-text value="Масштабируемый текст" position="0 2 -4" rotation="0 45 0" scale="2 2 2"></a-text>
<a-text> может взаимодействовать с пользователем
через компоненты A-Frame, такие как cursor,
raycaster или сторонние плагины. Например, изменение цвета
текста при наведении:
<a-text value="Наведи на меня" color="#000" position="0 1 -2"
event-set__enter="_event: mouseenter; color: red"
event-set__leave="_event: mouseleave; color: black">
</a-text>
Хотя <a-text> не поддерживает полноценный HTML,
через атрибуты можно эмулировать различные стили: шрифты, выравнивание,
цвет, прозрачность, размер. Для сложной типографики используют
комбинацию <a-text> с компонентами A-Frame, которые
поддерживают анимацию, появление и исчезновение текста, а также
динамическое изменение значения через JavaScript.
const textEl = document.querySelector('a-text');
textEl.setAttribute('value', 'Новый текст через JS');
textEl.setAttribute('color', '#00FF00');
Текстовые объекты в больших сценах могут создавать нагрузку на рендеринг, особенно при использовании множества шрифтов и прозрачности. Рекомендуется:
width и wrapCount.scale и
выбирать контрастный color.<a-entity> с дочерним <a-text> для
удобного позиционирования и анимации.Использование <a-text> обеспечивает гибкость и
простоту при создании информативных и визуально привлекательных сцен в
A-Frame, позволяя интегрировать текст непосредственно в трехмерное
пространство без необходимости сложного программирования мешей и
материалов.