Пользовательская анимация для CAEmitterCell

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

Как только частица появится, я бы хотел, чтобы она увеличилась примерно до 1,2, а затем через короткое время снизила ее до 1,0 и оставалась такой до тех пор, пока не истечет время жизни.

Я знаю о свойствах scale, scaleRange и scaleSpeed ​​CAEmitterCell, но они слишком случайны для того, что мне нужно.

Возможно ли это сделать? Я попытался добавить CABasicAnimation следующим образом (имя моего CAEmitterCell - "сердце"):

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"emitterCells.heart.scale"];
anim.fromValue = @(1.0);
anim.toValue = @(2.0);
anim.duration = 3.0;
anim.fillMode = kCAFillModeForwards;
anim.repeatCount = CGFLOAT_MAX;
[self.heartsEmitter addAnimation:anim forKey:@"scaleAnimation"];

но это не работает, частицы просто появляются в случайном масштабе, они вообще не анимируются.

1 ответ

Я не совсем уверен, но мне кажется, что вы применяете анимацию к эмиттеру вместо ячеек.

Если CAEmitterCellзовут сердце попробуй это: [self.heart addAnimation:anim forKey:@"scaleAnimation"];, Это помогает?

Другие вопросы по тегам