ct.types
ct.types
Этот объект позволяет создавать новые копии и манипулировать ими. Каждая копия является экземпляром класса AnimatedSprite из Pixi, так что вы можете найти дополнительные параметры на их сайте документации.
Работа с копиями
Перемещение копий
Каждая копия имеет следующие параметры для передвижения:
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);
.