Компонент text является основным инструментом для
отображения текста в сценах A-Frame. Он предоставляет гибкие возможности
управления визуальными параметрами, позиционированием, стилизацией и
интеграцией текста с 3D-объектами.
<a-entity text="value: Привет, мир!; color: #FFF; align: center"></a-entity>
value – текст, который будет
отображаться. Может содержать переносы строк с использованием
\n.color – цвет текста в формате HEX, RGB
или CSS-цвета. Например, color: red или
color: #00FF00.align – выравнивание текста
относительно центра, доступные значения: left,
center, right.width – максимальная ширина текста.
Если текст превышает указанную ширину, строки автоматически
переносятся.wrap-count – альтернатива
width, указывающая количество символов в строке до
переноса.baseline – вертикальное выравнивание
текста: top, center, bottom.anchor – точка привязки текста к
объекту, значения: left, center,
right.Компонент text поддерживает пользовательские шрифты в
формате .fnt и .png, которые создаются с
помощью инструментов типа BMFont. Настройка шрифта осуществляется через
атрибут font:
<a-entity text="value: Пример; font: url(/fonts/Roboto-msdf.json)"></a-entity>
font – путь к JSON-файлу шрифта.letter-spacing – расстояние между
символами. Может быть положительным или отрицательным числом.line-height – расстояние между
строками текста. Позволяет регулировать плотность вертикального
интервала.opacity – прозрачность текста,
значение от 0.0 до 1.0.Компонент text можно изменять динамически с помощью
JavaScript. Для этого используется метод setAttribute:
const textEntity = document.querySelector('#myText');
textEntity.setAttribute('text', 'value', 'Новый текст');
textEntity.setAttribute('text', 'color', '#FF0000');
Также можно управлять отдельными свойствами:
textEntity.setAttribute('text', {value: 'Обновление', align: 'right'});
Текст в A-Frame является объектом 3D-сцены, поэтому его можно масштабировать и позиционировать:
<a-entity text="value: 3D Текст; color: #0F0" position="1 2 -3" rotation="0 45 0" scale="2 2 2"></a-entity>
position – координаты в пространстве
сцены.rotation – поворот объекта по осям X,
Y, Z.scale – масштабирование текста по осям
X, Y, Z.Для улучшения читаемости текста на сложном фоне используются свойства
shader и outlineWidth:
<a-entity text="value: Контурный текст; color: #FFF; shader: msdf; outlineColor: #000; outlineWidth: 0.05"></a-entity>
shader – рендеринг текста, чаще всего
используется msdf для качественного сглаживания.outlineColor – цвет контура.outlineWidth – ширина контура.
Позволяет сделать текст более заметным на ярком фоне.Многострочный текст формируется с помощью \n:
<a-entity text="value: Первая строка\nВторая строка\nТретья строка; align: left"></a-entity>
Для автоматического переноса строк можно использовать
wrapCount или ограничивать ширину width:
<a-entity text="value: Длинный текст для переноса; width: 2"></a-entity>
Текст можно использовать как интерактивный элемент, реагирующий на события A-Frame:
<a-entity text="value: Нажми меня" id="interactiveText" position="0 1.5 -2"></a-entity>
<script>
const textEntity = document.querySelector('#interactiveText');
textEntity.addEventListener('click', () => {
textEntity.setAttribute('text', 'color', '#FF0');
textEntity.setAttribute('text', 'value', 'Клик зафиксирован');
});
</script>
Поддерживаются события mouseenter,
mouseleave, click и другие, что позволяет
создавать интерактивные панели и HUD-интерфейсы.
msdf) вместо стандартных
шрифтов браузера.mergeMeshes, если они статические, чтобы снизить нагрузку
на рендеринг.tabSize – размер табуляции в
символах.whiteSpace – управление переносами:
normal, pre, nowrap.baseline – вертикальная привязка
текста относительно позиции объекта.lineHeight – контроль расстояния между
строками.letterSpacing – межбуквенный
интервал.Использование всех этих параметров позволяет создавать сложные и визуально привлекательные тексты для VR-сцен, интегрируемые с анимацией, интерактивными элементами и другими компонентами A-Frame.