О чем этот пример
Визуальный интерфейс, меню, кнопки и информационные панели — многие элементы игрового UI требуют отрисовки прямоугольников со скругленными углами. Phaser Graphics предоставляет мощный и гибкий инструмент `strokeRoundedRect` для создания таких контуров. Эта статья покажет, как рисовать простые скругленные прямоугольники и как тонко настраивать радиус каждого угла в отдельности, что позволит вам создавать уникальные и стильные элементы для ваших проектов.
Версия Phaser: код и демо в этой статье рассчитаны на Phaser 3.90.0.
Живой запуск
Ниже встроен рабочий билд примера. Оригинальный источник: GitHub.
Исходный код
class Example extends Phaser.Scene
{
graphics;
create ()
{
this.graphics = this.add.graphics();
this.graphics.lineStyle(2, 0xffff00, 1);
// 32px radius on the corners
this.graphics.strokeRoundedRect(32, 32, 300, 200, 32);
this.graphics.lineStyle(4, 0xff00ff, 1);
// Using an object to define a different radius per corner
this.graphics.strokeRoundedRect(360, 240, 400, 300, { tl: 64, tr: 22, bl: 12, br: 0 });
}
}
const config = {
width: 800,
height: 600,
type: Phaser.AUTO,
parent: 'phaser-example',
scene: Example
};
const game = new Phaser.Game(config);
Создание графического объекта
Работа с векторной графикой в Phaser начинается с создания объекта Graphics. Этот объект является контейнером для отрисовки примитивов: линий, фигур и заливок.
this.graphics = this.add.graphics();
Созданный объект сохраняется в свойстве класса, чтобы к нему можно было обращаться позже. На этом этапе объект готов, но у него еще нет стиля линии для рисования.
Настройка стиля линии
Перед рисованием фигуры необходимо задать параметры контура с помощью метода lineStyle. Эти параметры будут применяться ко всем последующим операциям рисования, пока стиль не будет изменен.
this.graphics.lineStyle(2, 0xffff00, 1);
* Первый аргумент (`2`) — толщина линии в пикселях.
* Второй аргумент (0xffff00) — цвет линии в шестнадцатеричном формате (в данном случае желтый).
* Третий аргумент (`1`) — альфа-канал (прозрачность), где 1 — полностью непрозрачный.
Рисование прямоугольника с равными углами
Базовый способ нарисовать скругленный прямоугольник — использовать метод strokeRoundedRect с числовым значением радиуса. Этот радиус будет единым для всех четырех углов.
this.graphics.strokeRoundedRect(32, 32, 300, 200, 32);
* Первые два аргумента (32, 32) — координаты X и Y верхнего левого угла прямоугольника.
* Следующие два аргумента (300, 200) — ширина и высота прямоугольника.
* Пятый аргумент (32) — радиус скругления для всех углов. Чем больше значение, тем более плавным и округлым будет угол.
Изменение стиля и индивидуальная настройка углов
Вы можете изменить стиль линии в любой момент, чтобы нарисовать новую фигуру с другими параметрами. Для создания сложных форм с разной степенью скругления на каждом углу пятым аргументом передается объект с конфигурацией.
this.graphics.lineStyle(4, 0xff00ff, 1);
this.graphics.strokeRoundedRect(360, 240, 400, 300, { tl: 64, tr: 22, bl: 12, br: 0 });
Здесь мы сначала меняем стиль на более толстую (4px) линию пурпурного цвета (0xff00ff). Затем рисуем прямоугольник, где каждый угол задан отдельно:
* tl (top-left) — верхний левый угол, радиус 64.
* tr (top-right) — верхний правый угол, радиус 22.
* bl (bottom-left) — нижний левый угол, радиус 12.
* br (bottom-right) — нижний правый угол, радиус 0 (прямой угол).
Использование объекта для настройки позволяет создавать асимметричные и динамичные формы.
Что попробовать дальше
Метод strokeRoundedRect в Phaser — это ключ к созданию современных и визуально приятных элементов интерфейса. Вы можете рисовать как стандартные кнопки с одинаковым скруглением, так и сложные контуры с индивидуальными параметрами для каждого угла. Для экспериментов попробуйте анимировать радиусы углов, создавая плавные переходы формы, или комбинируйте несколько графических объектов с разными стилями линий для многослойных эффектов.
