Как я могу заставить 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 для ячеек?