Bliss.js предоставляет удобный интерфейс для работы с HTML5 canvas,
упрощая создание графики, анимаций и интерактивных визуальных элементов.
В основе лежит стандартный <canvas> элемент, к
которому библиотека добавляет высокоуровневые методы и упрощённое
управление контекстом рисования.
Создание canvas в Bliss.js происходит с помощью функции
Bliss.canvas(), которая автоматически создаёт элемент и
возвращает объект с методами для работы с ним. Пример:
const canvas = Bliss.canvas({
width: 800,
height: 600,
container: document.body
});
Ключевые параметры:
width и height — размеры холста в
пикселях.container — элемент DOM, в который будет помещён
canvas.background — опционально, задаёт фон холста, может быть
цветом или градиентом.Bliss.js скрывает прямую работу с контекстом (2d),
предоставляя собственные методы для рисования:
canvas.rect(50, 50, 200, 100, { fill: 'red', stroke: 'black', lineWidth: 3 });
canvas.circle(400, 300, 75, { fill: 'blue', stroke: 'black' });
canvas.line(100, 100, 300, 300, { stroke: 'green', lineWidth: 2 });
Особенности методов:
rect(x, y, width, height, options) — прямоугольник с
заливкой и обводкой.circle(x, y, radius, options) — окружность с заливкой и
обводкой.line(x1, y1, x2, y2, options) — линия между двумя
точками.options может содержать свойства: fill,
stroke, lineWidth, dash и другие
параметры стиля.Bliss.js поддерживает как простые цвета, так и линейные и радиальные градиенты:
const gradient = canvas.createLinearGradient(0, 0, 800, 0);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'yellow');
canvas.rect(50, 200, 700, 100, { fill: gradient });
Для радиального градиента используется метод
createRadialGradient(x0, y0, r0, x1, y1, r1).
Рисование текста в Bliss.js выполняется через метод
text():
canvas.text("Bliss.js Canvas", 400, 50, {
font: "30px Arial",
fill: "black",
align: "center",
baseline: "middle"
});
Параметры:
font — стиль шрифта, совместимый с CSS.fill — цвет текста.align — выравнивание текста (left,
center, right).baseline — базовая линия (top,
middle, bottom).Bliss.js интегрирует управление анимацией с помощью метода
animate(callback):
let x = 0;
canvas.animate(() => {
canvas.clear();
canvas.circle(x, 300, 50, { fill: 'purple' });
x += 2;
if (x > canvas.width) x = 0;
});
Принцип работы:
animate вызывает callback на каждом кадре.canvas.clear() очищает холст перед новым рендером.requestAnimationFrame.Bliss.js позволяет легко добавлять обработчики событий на canvas:
canvas.on('click', (event) => {
const { x, y } = event;
canvas.circle(x, y, 20, { fill: 'orange' });
});
Доступные события: click,
mousemove, mousedown, mouseup,
mouseenter, mouseleave. Объект события
содержит координаты мыши относительно canvas (x,
y), что упрощает обработку взаимодействия.
Bliss.js поддерживает загрузку и отрисовку изображений:
const img = new Image();
img.src = 'image.png';
img.onl oad = () => {
canvas.image(img, 100, 100, 200, 150);
};
Метод image(img, x, y, width, height) позволяет
масштабировать изображение при отрисовке. Также поддерживаются эффекты
прозрачности через alpha в опциях.
Bliss.js предоставляет методы для работы с трансформациями:
canvas.save();
canvas.translate(400, 300);
canvas.rotate(Math.PI / 4);
canvas.rect(-50, -50, 100, 100, { fill: 'green' });
canvas.restore();
Обязательные моменты:
save() и restore() сохраняют и
восстанавливают состояние контекста.translate(x, y) смещает систему координат.rotate(angle) поворачивает систему координат.scale(sx, sy) изменяет масштаб объектов.Bliss.js позволяет создавать несколько canvas-слоев для сложных визуальных эффектов:
const background = Bliss.canvas({ width: 800, height: 600, container: document.body });
const foreground = Bliss.canvas({ width: 800, height: 600, container: document.body });
background.rect(0, 0, 800, 600, { fill: 'lightblue' });
foreground.text("Foreground Text", 400, 300, { font: '40px Arial', fill: 'white' });
Слои можно накладывать друг на друга, управлять прозрачностью и
видимостью через style.opacity и
style.display.
Bliss.js предоставляет доступ к пиксельным данным через
getImageData() и putImageData():
const data = canvas.getImageData(50, 50, 100, 100);
for (let i = 0; i < data.data.length; i += 4) {
data.data[i] = 255 - data.data[i]; // инверсия красного канала
}
canvas.putImageData(data, 50, 50);
Принцип работы:
getImageData(x, y, width, height) возвращает объект с
массивом RGBA.putImageData(data, x, y) обновляет область canvas.Bliss.js содержит полезные утилиты для ускорения работы с canvas:
canvas.clear(color) — очистка холста с заливкой
цветом.canvas.randomColor() — генерация случайного цвета.canvas.distance(x1, y1, x2, y2) — вычисление расстояния
между точками.canvas.centerX() и canvas.centerY() —
получение координат центра холста.Эти функции позволяют ускорить написание кода и делают его более читабельным.
Bliss.js сочетает мощь нативного canvas с удобным высокоуровневым API, что делает библиотеку эффективным инструментом для интерактивной графики и анимации в веб-приложениях. Сочетание простых методов рисования, трансформаций, работы с изображениями и событий обеспечивает гибкость при создании любых визуальных интерфейсов.