Two.js — это мощная библиотека для рисования двумерной графики в браузере с использованием SVG, Canvas или WebGL. Работа с текстом в Two.js отличается гибкостью и высокой настраиваемостью, что позволяет интегрировать текстовые объекты в сложные анимации и графические композиции.
Текстовый объект создается с помощью класса Two.Text.
Основной синтаксис:
const text = new Two.Text(string, x, y, options);
string — строка текста, которую необходимо
отобразить.x и y — координаты центра текста в системе
координат Two.js.options — объект с настройками текста
(необязательный).Пример создания простого текста:
const two = new Two({ width: 800, height: 600 }).appendTo(document.body);
const helloText = new Two.Text('Привет, Two.js!', 400, 300, {
size: 48,
family: 'Arial',
weight: 700,
alignment: 'center',
fill: '#ff0000'
});
two.add(helloText);
two.update();
В данном примере:
size — размер шрифта в пикселях.family — семейство шрифта.weight — толщина шрифта (число или строка, например,
'bold').alignment — выравнивание текста ('left',
'center', 'right').fill — цвет текста в формате CSS.Текст в Two.js наследует свойства от Two.Shape, что
позволяет применять трансформации, а также имеет собственные
свойства:
value — строковое содержимое
текста.
helloText.value = 'Новый текст';size — размер шрифта.
helloText.size = 36;family — семейство шрифта.
weight — толщина шрифта.
style — стиль шрифта
('normal', 'italic',
'oblique').
alignment — выравнивание по
горизонтали.
fill — цвет заливки
текста.
stroke и
linewidth — цвет и ширина обводки
текста.
Текстовые объекты полностью поддерживают трансформации Two.js: перемещение, масштабирование и вращение.
helloText.translation.set(200, 100);
helloText.rotation = Math.PI / 4;
helloText.scale = 1.5;
two.update();
translation — вектор смещения.rotation — угол поворота в радианах.scale — коэффициент масштабирования.Анимация текста осуществляется через встроенный метод
two.bind('upd ate', callback):
two.bind('update', function(frameCount) {
helloText.rotation += 0.01;
helloText.scale = 1 + 0.5 * Math.sin(frameCount * 0.05);
}).play();
Two.js не имеет встроенной поддержки многострочного текста через
\n, поэтому строки разделяются вручную и создаются
отдельные объекты:
const lines = ['Строка 1', 'Строка 2', 'Строка 3'];
lines.forEach((line, index) => {
const textLine = new Two.Text(line, 400, 200 + index * 50, { size: 32, alignment: 'center' });
two.add(textLine);
});
two.update();
При необходимости можно создать обертку для удобного управления многострочным текстом и анимацией каждой строки.
Two.js позволяет комбинировать текст с градиентами и эффектами
прозрачности через свойства fill, stroke,
opacity:
const gradientText = new Two.Text('Градиентный текст', 400, 300, {
size: 60,
fill: '#00f',
stroke: '#0ff',
linewidth: 2,
opacity: 0.8
});
two.add(gradientText);
two.update();
Также текст можно группировать с другими объектами в
Two.Group для применения единой анимации или
трансформации.
Текст можно комбинировать с примитивами, создавая сложные графические композиции:
const circle = two.makeCircle(400, 300, 100);
circle.fill = '#ccc';
circle.noStroke();
const label = new Two.Text('Центр круга', 400, 300, { size: 24 });
two.add(circle, label);
two.update();
Группировка позволяет управлять объектами как единым целым:
const group = two.makeGroup(circle, label);
group.translation.se t(100, 50);
two.update();
value.opacity и fill вместо
удаления и пересоздания объектов для динамических изменений.size, fill, rotation) можно
анимировать через two.bind('update').Создание текстовых объектов в Two.js открывает возможности для интерактивной визуализации, динамичных интерфейсов и сложной графики с анимацией, оставаясь при этом простым в синтаксисе и управлении.