我试图让CAEmitterLayer
s 和CAEmitterCell
s 从他们父母持续时间中间的某个地方开始他们的动画。这可能吗?我尝试使用beginTime
andtimeOffset
属性,但似乎无法正常工作。
为后代添加了一些代码:(假设我希望发射器在第 5 秒开始)
CAEmitterLayer *emitter = [CAEmitterLayer new];
// emitter.beginTime = -5.0f; // I tried this
// emitter.timeOffset = 5.0f; // I also tried this, with beginTime = 0.0, and with beginTime = AVCoreAnimationBeginTimeAtZero
/* set some other CAEmitterLayer properties */
CAEmitterCell *cell = [CAEmitterCell new];
// cell.beginTime = -5.0f; // Then I saw that CAEmitterCell implements CAMediaTiming protocol so I tried this
// cell.timeOffset = 5.0f; // and this
/* set some other CAEmitterCell properties */
emitter.emitterCells = @[cell];
[viewLayer addSubLayer:emitter];
但动画仍然从发射器生成粒子的位置开始。
再次编辑以解释我正在尝试做的事情:
假设我有一个CAEmitterLayer
动画雨,所以我设置单元格做一个从屏幕顶部开始的“下降”动画。在开始渲染期间,我不想在“还没有下雨”的状态下开始。我想从屏幕已经被雨覆盖的地方开始。