我正试图建立一个CAEmitterLayer制作五彩纸屑的效果,我遇到了两个问题:
birthRate我的单元格设置为非零值以启动动画时,我会在屏幕上随机放置一系列单元格,这些单元格会正常生成动画,然后发射器继续正常发射.emitterCells我在屏幕上绘制内容时,无论何时触摸屏幕,发射器都会emitterCells(看似)随机抽取(看似)随机时间量的随机位置.发射器中没有任何内容与任何触摸事件相关联(即我不是故意在触摸事件上绘制任何东西),但该图层位于具有多个嵌入视图的视图中.我触摸得越多,出现的细胞就越多.这是我设置发射器的代码,然后启动和停止它(一旦我调用了stop函数,然后点击屏幕就会停止创建新的随机元素):
- (void)setupConfetti
{
self.confettiLayer = [CAEmitterLayer layer];
[self.view.layer addSublayer:self.confettiLayer];
[self.view.layer setNeedsDisplay];
self.confettiLayer.emitterPosition = CGPointMake(1024.0/2,-50.0);
self.confettiLayer.emitterSize = CGSizeMake(1000.0, 10.0);
self.confettiLayer.emitterShape = kCAEmitterLayerLine;
self.confettiLayer.renderMode =kCAEmitterLayerUnordered;
CAEmitterCell *confetti = [CAEmitterCell emitterCell];
confetti1.contents = (id)[[UIImage imageNamed:@"confetti.png"] CGImage];
confetti.emissionLongitude = M_PI;
confetti.emissionLatitude = 0;
confetti.lifetime = 5;
confetti.birthRate = 0.0;
confetti.velocity = 125;
confetti.velocityRange = 50;
confetti.yAcceleration = 50;
confetti.spin = 0.0;
confetti.spinRange = 10;
confetti.name = @"confetti1";
self.confettiLayer.emitterCells = [NSArray arrayWithObjects:confetti, nil]; …Run Code Online (Sandbox Code Playgroud)