Two.js предоставляет мощные средства для работы с графикой на HTML5 Canvas, SVG и WebGL. Для отображения текста используется объект Two.Text, который позволяет создавать, позиционировать и стилизовать текстовые элементы с высокой гибкостью.
Для начала необходимо создать экземпляр Two.Text:
const text = new Two.Text(
'Пример текста', // Содержимое текста
100, // Координата X
100, // Координата Y
{
size: 36, // Размер шрифта в пикселях
family: 'Arial', // Шрифт
weight: 700, // Жирность шрифта
style: 'italic', // Стиль: normal, italic, oblique
alignment: 'center', // Выравнивание: left, center, right
linewidth: 2, // Толщина обводки
fill: '#000000', // Цвет заливки текста
stroke: '#ff0000' // Цвет обводки
}
);
Ключевые свойства конструктора:
'normal',
'italic', 'oblique'.'left',
'center', 'right').После создания объекта Two.Text, его необходимо добавить в сцену Two:
const two = new Two({ width: 800, height: 600 }).appendTo(document.body);
two.add(text);
two.update();
Метод two.add() помещает объект в сцену, а two.update() обеспечивает моментальное отображение изменений на холсте.
Позиционирование текста:
text.translation.set(200, 150); // Перемещение текста на новые координаты
Масштабирование текста:
text.scale = 1.5; // Увеличение текста в 1.5 раза
Поворот текста:
text.rotation = Math.PI / 4; // Поворот на 45 градусов
Two.js позволяет динамически изменять свойства текста:
text.fill = '#3498db'; // Изменение цвета заливки
text.stroke = '#2c3e50'; // Изменение цвета обводки
text.size = 48; // Изменение размера шрифта
text.family = 'Verdana'; // Смена шрифта
text.weight = 'bold'; // Изменение жирности
text.alignment = 'right'; // Выравнивание по правому краю
Можно комбинировать несколько стилей одновременно, что дает возможность создавать сложные текстовые эффекты.
Для создания анимаций применяется цикл рендеринга Two.bind(‘update’, callback) или метод two.update() в цикле:
two.bind('upd ate', function(frameCount) {
text.rotation += 0.01; // Плавный поворот текста
text.translation.x = 200 + 100 * Math.sin(frameCount * 0.05); // Колебание по X
}).play();
Использование bind(‘update’) позволяет синхронизировать изменения свойств текста с частотой кадров, создавая плавные анимации.
Two.js поддерживает многострочный текст через символы переноса
\n:
const multiLineText = new Two.Text(
'Первая строка\nВторая строка\nТретья строка',
400, 300,
{ size: 30, alignment: 'center', fill: '#27ae60' }
);
two.add(multiLineText);
two.update();
Выравнивание и размер шрифта применяются ко всем строкам текста, обеспечивая консистентный вид.
Текстовые объекты можно сгруппировать с другими графическими элементами через Two.Group:
const circle = new Two.Circle(0, 0, 50);
circle.fill = '#e74c3c';
const group = two.makeGroup(circle, text);
group.translation.se t(400, 300);
Группировка позволяет применять трансформации ко всей группе элементов одновременно, сохраняя относительное позиционирование текста и других объектов.
Two.js поддерживает рендеринг на Canvas, SVG и WebGL. Свойства текста работают одинаково на всех поверхностях, что упрощает переносимость кода между платформами. Для выбора рендерера достаточно указать параметр type при создании экземпляра Two:
const two = new Two({ width: 800, height: 600, type: Two.Types.svg }).appendTo(document.body);
\n,
а горизонтальное выравнивание регулируется через
alignment.Использование Two.Text открывает широкие возможности для создания динамических и стилизованных текстовых элементов в двухмерной графике с помощью JavaScript.