Добавить 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 предоставят их.