Как я могу заставить CAEmitterCell исчезать в конце его жизни? - PullRequest
14 голосов
/ 28 ноября 2011

Я оживляю некоторые частицы и вместо того, чтобы просто исчезнуть в конце их жизни, я бы хотел, чтобы они исчезли.

У меня есть CAEmitterCell, определенный с временем жизни 35.0. Я не хочу, чтобы частица исчезала в течение всей продолжительности жизни частицы. Я только хочу, чтобы это исчезло в конце. Возможно последние 2 или 3 секунды.

Ответы [ 2 ]

6 голосов
/ 02 июля 2013

Для свойства CAEmitterCell color установите значение альфа-канала на lifetime * alphaSpeed (где alphaSpeed ​​равно -1.0 / fadeOutDuration).

Таким образом, для времени жизни 35.0 и fadeOutDuration 2.0, alphaSpeed ​​будет -0,5, а альфа будет 17,5.

Есть несколько предостережений:

  1. Это работает, только если ваши клетки должны начинаться с полной альфы.
  2. Вам нужно установить свойство цвета CAEmitterCell, используя CGColorRef, созданный с помощью CGColorCreateCopyWithAlphaUIColor, и CGColorCreate ограничивают свои значения максимум до 1,0.По какой-то причине CGColorCreateCopyWithAlpha нет.
1 голос
/ 24 декабря 2011

Только что наткнулся на это в документах, которые могут указывать в правильном направлении:

имя Название ячейки.

@ свойство (копия) NSString * имя обсуждение Имя ячейки используется при построении путей ключей анимации, которые ссылаются на ячейку. По умолчанию ноль.

Например, добавление анимации к окружающему слою ячейки с помощью ключевого пути, такого как emitterCells.myCellName.redRange, приведет к анимации свойства redRange ячейки в массиве emitterCells слоя с именем myCellName.

Доступность Доступный в Mac OS X v10.6 и позже. Объявлен в CAEmitterCell.h

Я так понимаю, вы все еще добавляете анимацию к слою, но с помощью ключевого пути, который ссылается на часть этого слоя - в данном случае это свойство ячейки. Есть ли у клеток альфа-свойство?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...