В Two.js текст создаётся с использованием объекта
Two.Text, который наследует свойства базового объекта
Two.Shape. Основные параметры конструктора:
const text = new Two.Text('Пример текста', x, y, {
size: 48,
family: 'Arial',
weight: 'bold',
alignment: 'center',
baseline: 'middle'
});
Объект текста добавляется в сцену через метод
two.add(text), после чего отображается на холсте вызовом
two.update().
Two.js позволяет гибко управлять визуальными свойствами текста:
text.fill = '#FF5733'; // Цвет заливки текста
text.stroke = '#000000'; // Цвет контура
text.linewidth = 2; // Толщина контура
text.opacity = 0.85; // Прозрачность
text.visible = true; // Видимость объекта
В отличие от HTML, в Two.js текст является векторным объектом, что обеспечивает чёткое масштабирование без потери качества.
Текст можно масштабировать, вращать и перемещать с помощью стандартных методов Two.js:
text.translation.set(200, 150); // Перемещение
text.rotation = Math.PI / 4; // Вращение на 45 градусов
text.scale = 1.5; // Масштабирование
Эти трансформации применяются к объекту динамически и могут быть
анимированы через Two.js анимационный цикл.
Two.js предоставляет встроенный цикл обновления для анимации:
two.bind('update', function(frameCount) {
text.rotation += 0.01; // Плавное вращение текста
text.opacity = Math.abs(Math.sin(frameCount * 0.01)); // Пульсация прозрачности
}).play();
Для создания более сложного декоративного текста используется
CanvasPattern или градиенты, передаваемые через
fill:
const ctx = two.renderer.ctx;
const gradient = ctx.createLinearGradient(0, 0, 0, 50);
gradient.addColorStop(0, '#FF0000');
gradient.addColorStop(1, '#0000FF');
text.fill = gradient;
Two.js поддерживает визуальные эффекты через свойства
shadowColor, shadowOffsetX,
shadowOffsetY и shadowBlur:
text.shadowColor = 'rgba(0,0,0,0.5)';
text.shadowOffsetX = 4;
text.shadowOffsetY = 4;
text.shadowBlur = 10;
Для создания декоративных композиций текст можно объединять с другими объектами Two.js, например, с кругами или линиями:
const circle = two.makeCircle(text.translation.x, text.translation.y, 60);
circle.fill = 'rgba(255,255,0,0.3)';
circle.stroke = '#FFAA00';
circle.linewidth = 3;
two.add(text, circle);
Two.Group позволяет
применять трансформации к набору объектов одновременно:const group = two.makeGroup(text, circle);
group.rotation = Math.PI / 6;
Текст можно сделать интерактивным через обработку событий мыши или касаний. Для этого отслеживаются координаты курсора и проверяется попадание в область текста:
canvas.addEventListener('mousemove', function(e) {
const dx = e.offsetX - text.translation.x;
const dy = e.offsetY - text.translation.y;
if (Math.sqrt(dx*dx + dy*dy) < 50) {
text.fill = '#00FF00'; // изменение цвета при наведении
} else {
text.fill = '#FF5733';
}
});
fill и stroke для объёмного
эффекта.Two.Group для удобного
управления.bind('update', callback) для анимации
свойств.Эти техники позволяют создавать декоративный, динамичный и визуально насыщенный текст в Two.js, полностью используя возможности векторной графики и анимации на Canvas.