Добавить CAEmitterCell в другой CAEmitterCell

Я пытаюсь создать эффект частиц, когда у меня есть ячейка, вложенная в другую ячейку. Подумайте об основном примере фейерверка, который они имеют здесь, в Apple Docs. Они вложили ячейки в другие ячейки и рассчитали их, используя параметр BeginTime. У меня, однако, нет параметра "beginTime" для моего CAEmittorCell, как у меня, у меня он есть в CAEmittorLayer вместо этого... Как я должен вкладывать ячейки и выполнять их в разное время, если ячейка не имеет параметр beginTime?

Обратите внимание на пример кода Apple, у них есть параметр "beginTime" для CAEmitterCell

**CAEmitterCell *firework = [CAEmitterCell emitterCell];**
firework.contents = img;
firework.birthRate = 9999;
firework.scale = 0.6;
firework.velocity = 130;
firework.lifetime = 2;
firework.alphaSpeed = -0.2;
firework.yAcceleration = -80;
**firework.beginTime = 1.5;**
firework.duration = 0.1;
firework.emissionRange = 2 * M_PI;
firework.scaleSpeed = -0.1;
firework.spin = 2;

---- Решено, см. Ответы ниже ----

Я просто вызвал селектор вручную, чтобы получить желаемый результат:

CAEmitterCell cell = new CAEmitterCell();
cell.SetValueForKeyPath (NSNumber.FromFloat(1), (NSString)"beginTime");

1 ответ

Решение

CAMediaTiming привязки на самом деле не отсутствуют. Они были сложены в CAAnimation ( здесь) и CALayer ( здесь). Это потому, что до 7.0 [Protocol] поддержка, это был способ реализации протоколов.

Проблема в том, что CAMediaTiming задокументировано для принятия только этими двумя типами - но CAEmitterCell (и, возможно, другие, мне нужно проверить) также соответствует этому и прямо сейчас не выставлять методы протокола.

Быстрый / немедленный обходной путь - вызвать отсутствующий селектор в экземпляре. Будущие версии Xamarin.iOS предоставят их.

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