Как я могу заставить CAEmitterCell исчезать в конце своей жизни?
Я оживляю некоторые частицы и вместо того, чтобы просто исчезнуть в конце их жизни, я бы хотел, чтобы они исчезли.
У меня есть CAEmitterCell
, определенный с временем жизни 35.0. Я не хочу, чтобы частица исчезала в течение всей продолжительности жизни частицы. Я только хочу, чтобы он исчез в конце. Возможно, последние 2 или 3 секунды.
Ответы
Ответ 1
Для свойства CAEmitterCell
color
установите значение альфа-значения lifetime * alphaSpeed
(где alphaSpeed равно -1.0/fadeOutDuration).
Итак, для жизни 35.0 и fadeOutDuration 2.0, alphaSpeed будет -0.5, а альфа будет 17.5.
Есть пара предостережений:
- Это работает только в том случае, если ваши ячейки должны начинаться с полной альфы.
- Вам нужно установить свойство цвета
CAEmitterCell
с помощью CGColorRef
, созданного с помощью CGColorCreateCopyWithAlpha
. И UIColor
, и CGColorCreate
зажимают свои значения максимум до 1,0. По какой-то причине CGColorCreateCopyWithAlpha
не работает.
Ответ 2
Просто наткнулся на это в документах, которые могут указывать в правильном направлении:
имя Имя ячейки.
@property (копия) NSString * name обсуждение Имя ячейки используется при построении путей ключа анимации, которые ссылаются на ячейку. Значение по умолчанию равно нулю.
Например, добавление анимации в ядро, охватывающее слой с ключом, например emitterCells.myCellName.redRange, будет анимировать свойство redRange ячейки в массиве emitterCells слоев с именем myCellName.
Наличие Доступно в Mac OS X версии 10.6 и более поздних версиях. Объявлено в CAEmitterCell.h
Полагаю, вы все равно добавляете анимацию к слою, но с ключом, который ссылается на часть этого слоя - в этом случае свойство ячейки. Существует ли свойство alpha для ячеек?