Перейти к основному содержанию

Класс Room


Класс Room

Автоматически переведённая страница

К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).

Комнаты — это сущности, которые содержат все копии, фоновые изображения, тайловые слои и продвинутые сущности. Их также называют картами или уровнями.

Класс Room наследует из класса PIXI.Containeropen in new window и получает все его методы и свойства.

Текущая комната, rooms.current.

rooms.current всегда указывает на текущую комнату. Если у вас несколько комнат, расположенных друг над другом, rooms.current будет указывать на начальную комнату, которая создается в начале игры или после вызова функции rooms.switch.

Для получения расположенных комнат можно использовать rooms.list или this.getRoom внутри событий копий.

Комнаты UI и игрового процесса

Комнаты можно размещать либо в координатах UI, либо в координатах игрового процесса. Комнаты игрового процесса управляются ct.camera, и их нельзя перемещать вручную. Но комнаты UI могут быть перемещены: например, чтобы перемещать небольшие виджеты внутри области просмотра.

Совет

Больше информации по этой концепции можно найти в разделе "Координаты игры и интерфейса". Для управления областью просмотра обратитесь к разделу "Работа с областью просмотра".

Значимые свойства

СвойствоТипОписание
alphanumberЗначение от 0 до 1, которое устанавливает непрозрачность комнаты. Вы можете использовать его, например, для постепенного исчезновения или появления слоев интерфейса. 0 означает полностью прозрачный, а 1 — полностью непрозрачный.
isUibooleanЕсли установлено значение true, комната не будет влиять на масштабирование, движение и вращение камеры. Дополнительные сведения см. в разделе Координаты игры и интерфейса.
x, ynumberРасположение комнаты. Изменение этих значений не влияет, если комната находится в игровых координатах (если ее свойство isUi равно false)

Добавление автоматически выравниваемых копий во время выполнения игры

Методы makeCopyAligned и makeCopyAlignedRef для комнат выравнивают элементы в комнате в зависимости от изменений размеров камеры. makeCopyAligned предполагает, что вы уже разместили копию относительно текущих размеров камеры, а makeCopyAlignedRef предполагает, что вы размещаете копию относительно размеров комнаты, установленных в ct.IDE.

Пример: Создайте копию в комнате UI и сделайте ее выровненной по верхнему центру

// В событии Start комнаты:
// Создайте копию в центре комнаты.
// Используйте camera.width и camera.height для этого.makeCopyAligned.
var copy = templates.copy('BossHealthbar', this.template.width / 2, 0);
this.makeCopyAlignedRef(copy, {
    alignX: 'center',
    alignY: 'start'
});

Первый аргумент — это копия, которую вы хотите выровнять, а второй аргумент содержит объект с этими свойствами:

  • alignX: как выровнять копию по горизонтали;
  • alignY: как выровнять копию по вертикали;
  • frame: ссылочная система для положения относительно нее (необязательно);
  • padding: границы, добавляемые к ссылочной системе (необязательно).

Свойства alignX и alignY могут иметь следующие значения:

  • 'start': элемент выравнивается относительно верхней/левой стороны фрейма выравнивания.
  • 'end': элемент выравнивается относительно нижней/правой стороны фрейма выравнивания.
  • 'center': элемент выравнивается относительно центра фрейма выравнивания.
  • 'both': элемент растягивается, чтобы заполнить фрейм выравнивания. Любые пробелы сохраняются как фиксированного размера.
  • 'scale': элемент масштабируется пропорционально фрейму выравнивания.

Свойство frame — это объект, определяющий ссылочную систему. Он имеет свойства x1, y1 и x2, y2, которые определяют координаты двух точек, образующих ссылочную систему. Каждая координата определяется как процент размера экрана.

this.makeCopyAlignedRef(copy, { // Сделайте копию выравненной по левой трети экрана
    alignX: 'stretch',
    alignY: 'stretch',
    frame: {
        x1: 0,
        y1: 0,
        x2: 33.3, // Правая сторона ссылочной системы будет размещена в одной третьей от экрана слева
        y2: 100
    }
});

Если фрейм не указан, он по умолчанию соответствует верхнему левому углу (0;0) и нижнему правому углу (100;100), то есть по умолчанию ссылочная система совпадает с размерами камеры.

padding используется для добавления дополнительных фиксированных отступов внутри ссылочной системы, что полезно при комбинировании элементов фиксированного и масштабируемого размера на экране. Это объект с свойствами left, right, top и bottom:

// Сделайте копию выравненной по верхнему краю экрана, сделайте ее масштабируемой пропорционально,
// но добавьте дополнительные отступы вокруг нее
this.makeCopyAlignedRef(copy, {
    alignX: 'stretch',
    alignY: 'start',
    padding: {
        left: 160,
        right: 160,
        top: 0,
        bottom: 0
    }
});

Если не задано, отступы по умолчанию равны 0 с каждой стороны.