Two.js предоставляет объект Two.Text, позволяющий
создавать и отображать текстовые элементы на канве. Для управления
положением текста используется сочетание свойств объекта, в частности
translation, alignment, baseline
и масштабирование через scale.
let two = new Two({ width: 800, height: 600 }).appendTo(document.body);
let text = new Two.Text('Пример текста', 0, 0, {
size: 48,
family: 'Arial',
leading: 1.2,
alignment: 'center'
});
two.add(text);
two.update();
size — размер шрифта в пикселях.family — шрифт текста.leading — межстрочный интервал.alignment — горизонтальное выравнивание текста
(left, center, right).Свойство alignment определяет, как текст будет
выравниваться относительно своей позиции (translation).
text.alignment = 'right';
text.translation.set(400, 100);
two.update();
В этом примере текст будет выравнен по правому краю относительно X=400.
Two.js использует свойство baseline для вертикального
выравнивания текста:
text.baseline = 'middle';
text.translation.set(400, 300);
two.update();
Для многострочного текста используется символ переноса
\n. Свойство leading позволяет контролировать
расстояние между строками:
let multiline = new Two.Text('Первая строка\nВторая строка\nТретья строка', 400, 300, {
size: 36,
family: 'Verdana',
alignment: 'center',
baseline: 'middle',
leading: 1.5
});
two.add(multiline);
two.update();
Каждая строка будет выравнена согласно параметрам
alignment и baseline, а межстрочный интервал
определяется leading.
Трансформации rotation, scale и
translation позволяют гибко позиционировать текст:
text.rotation = Math.PI / 6; // поворот на 30 градусов
text.scale = 1.5; // увеличение размера текста
text.translation.set(200, 150); // смещение позиции
two.update();
rotation — угол в радианах относительно центра
текста.scale — масштаб по обеим осям.translation — положение текста на канве.Two.js интегрируется с анимацией через
Two.makeRectangle, Two.makeText и собственные
методы обновления. Для анимации выравнивания можно изменять
translation или alignment динамически в
цикле:
let x = 0;
two.bind('upd ate', function(frameCount) {
text.translation.x = 200 + 100 * Math.sin(frameCount * 0.05);
}).play();
Это создаёт плавное горизонтальное движение текста с сохранением текущего выравнивания.
Важно учитывать, что изменение scale и
rotation влияет на визуальное положение текста относительно
точки translation. Для сохранения точного выравнивания
необходимо корректировать translation после применения
трансформации:
text.scale = 2;
text.translation.se t(400 - text.width, 300);
two.update();
Здесь text.width используется для корректного
позиционирования при правом выравнивании.
alignment совместно с
baseline для точного позиционирования текста.leading с
alignment, чтобы сохранить читаемость.