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

ct.types


ct.types

Этот объект позволяет создавать новые копии и манипулировать ими. Каждая копия является экземпляром класса AnimatedSprite из Pixi, так что вы можете найти дополнительные параметрыopen in new window на их сайте документации.

Работа с копиями

Перемещение копий

Каждая копия имеет следующие параметры для передвижения:

  • x, y — расположение копии;
  • xprev, yprev — расположение копии в предыдущем кадре;
  • xstart, ystart — координаты, в которых была создана копия;
  • speed — скорость движения (она же длина вектора [hspeed; vspeed]);
  • hspeed и vspeed — горизонтальная и вертикальная скорость;
  • direction — направление движения (от 0 до 360 градусов);
  • gravity — сила тяжести;
  • gravityDir — направление силы тяжести (от 0 до 360, по умолчанию 270).

Вы также можете вызвать this.addSpeed, чтобы добавить вектор скорости к копии в заданном направлении.

this.addSpeed(speed, dir);

Чтобы копия действительно двигалась с этими переменными, вы должны вызвать this.move(); в коде "Кадр" вашей копии (по умолчанию он уже есть в этом событии). Стандартная система движения уже учитывает ct.delta, поэтому она будет двигаться с плавной скоростью на любой частоте кадров.

Изменение внешнего вида

Существует ряд параметров, определяющих внешний вид копии:

  • animationSpeed — скорость анимации. Чем выше, тем быстрее; чем ниже, тем медленнее;
  • depth — слой рисунка;
  • tex — название используемой текстуры;
  • rotation — поворот текстуры в градусах;
  • scale — коэффициент масштаба объекта. Вы можете либо присвоить простое значение (this.scale = 0.5;) для равномерного масштабирования, либо изменить его компоненты x и y (this.scale.x = 0.5;).
  • tint — оттенок, применённый текстуре. Это должно быть шестнадцатеричное значение. Значение 0xFFFFFF уберёт окраску. Цвета такие же, как в CSS — например, 0xFF0000 — красный, 0x00FFFF — голубой, и т.д.;
  • alpha — непрозрачность копии. 0 — полностью прозрачный, 1 стоит по умолчанию (полностью непрозрачное отображение). Меняя значения в этом диапазоне, можно сделать плавное изменение степени прозрачности;
  • visible — видимость объекта (true или false).

Неизменяемые переменные:

  • currentFrame — текущий кадр анимации. Меняется он с помощью методов gotoAndPlay, gotoAndStop;
  • totalFrames — общее количество кадров в анимации.

Методы:

  • gotoAndPlay(frameIndex) — переходит к конкретному кадру и начинает воспроизведение анимации;
  • gotoAndStop(frameIndex) — останавливает анимацию и переходит к конкретному кадру;
  • play() — воспроизводит анимацию;
  • stop() — останавливает анимацию.

Разное

  • type — название типа, из которого была создана копия;

Удаление копии

Чтобы удалить копию, просто установите её параметр kill на true.

Пример: удалить копию, если кончилось её здоровье:

if (this.health <= 0) {
    this.kill = true;
}

Замечание

Код "Кадр" будет выполняться до тех пор, пока не начнётся событие "Прорисовка".

Методы и свойства ct.types

ct.types.copy(type: String, x, y) and ct.types.make(type: String, x, y)

Создаёт копию данного типа. Если x или y не указаны, они будут равны 0.

ct.types.each(func: Function)

Применяет функцию ко всем активным копиям.

Пример: уничтожить все копии в радиусе 150 пикселей

var me = this;
ct.types.each(function () {
    if (this !== me) { // не пытаемся ли мы уничтожить себя?
        if (ct.u.pdc(this.x, this.y, me.x, me.y) <= 150) {
            this.kill = true;
        }
    }
});

ct.u.pdc вычисляет расстояние между двумя точками. Эту и другие похожие функции можно найтиздесь.

ct.types.with(copy: Copy, func: Function)

Работает как ct.types.each, но только для указанной копии.

ct.types.list['TypeName']

Возвращает массив со всеми существующими копиями указанного типа.

Пример: уничтожить все копии типа Bonus.

for (var bonus of ct.types.list['Bonus']) {
    bonus.kill = true;
}

Это также можно записать следующим образом:

for (var bonus of ct.types.list.Bonus) {
    bonus.kill = true;
}

ct.types.addSpeed(o: Copy, spd, dir)

Добавляет вектор скорости указанной копии. Это развёрнутый вариант метода o.addSpeed(spd, dir);.