大佬教程收集整理的这篇文章主要介绍了ios – 当它结束CAEmitterLayer的CAEmitter单元格的生命周期时如何删除CAEmitterLayer – 而不是重复直到从超级图层中删除它,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#import "FireworksView.h" @implementation FireworksView - (void)launchFirework{ //Load the spark image for the particle CAEmitterLayer *mortor = [CAEmitterLayer layer]; mortor.emitterPosition = CGPointMake(self.bounds.size.width/2,self.bounds.size.height*(.75)); mortor.renderMode = kCAEmitterLayerAdditive; //Invisible particle represenTing the rocket before the explosion CAEmitterCell *rocket = [CAEmitterCell emitterCell]; rocket.emissionLongitude = -M_PI / 2; rocket.emissionLatitude = 0; rocket.lifetime = 1.6; rocket.birthRate = 1; rocket.veLocity = 400; rocket.veLocityRange = 100; rocket.yAcceleration = 250; rocket.emissionRange = M_PI / 4; rocket.color = CGColorCreateCopy([UIColor colorWithRed:.5 green:.5 blue:.5 alpha:.5].CGColor); rocket.redRange = 0.5; rocket.greenRange = 0.5; rocket.blueRange = 0.5; //Name the cell so that it can be animated later using keypath [rocket setName:@"rocket"]; //Flare particles emitted from the rocket as it flys CAEmitterCell *Flare = [CAEmitterCell emitterCell]; Flare.contents = (id)[UIImage imagenamed:@"tspark.png"].CGImage; Flare.emissionLongitude = (4 * M_PI) / 2; Flare.scale = 0.4; Flare.veLocity = 100; Flare.birthRate = 45; Flare.lifetime = 1.5; Flare.yAcceleration = 350; Flare.emissionRange = M_PI / 7; Flare.alphaSpeed = -0.7; Flare.scaleSpeed = -0.1; Flare.scaleRange = 0.1; Flare.beginTime = 0.01; Flare.duration = 0.7; //The particles that make up the explosion CAEmitterCell *firework = [CAEmitterCell emitterCell]; firework.contents = (id)[UIImage imagenamed:@"tspark.png"].CGImage; 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; //Name the cell so that it can be animated later using keypath [firework setName:@"firework"]; //preSpark is an invisible particle used to later emit the spark CAEmitterCell *preSpark = [CAEmitterCell emitterCell]; preSpark.birthRate = 80; preSpark.veLocity = firework.veLocity * 0.70; preSpark.lifetime = 1.7; preSpark.yAcceleration = firework.yAcceleration * 0.85; preSpark.beginTime = firework.beginTime - 0.2; preSpark.emissionRange = firework.emissionRange; preSpark.greenSpeed = 100; preSpark.blueSpeed = 100; preSpark.redSpeed = 100; //Name the cell so that it can be animated later using keypath [preSpark setName:@"preSpark"]; //The 'sparkle' at the end of a firework CAEmitterCell *spark = [CAEmitterCell emitterCell]; spark.contents = (id)[UIImage imagenamed:@"tspark.png"].CGImage; spark.lifetime = 0.05; spark.yAcceleration = 250; spark.beginTime = 0.8; spark.scale = 0.4; spark.birthRate = 10; preSpark.emitterCells = [NSArray arrayWithObjects:spark,nil]; rocket.emitterCells = [NSArray arrayWithObjects:Flare,firework,preSpark,nil]; mortor.emitterCells = [NSArray arrayWithObjects:rocket,nil]; [self.layer addSublayer:mortor]; }
以上是大佬教程为你收集整理的ios – 当它结束CAEmitterLayer的CAEmitter单元格的生命周期时如何删除CAEmitterLayer – 而不是重复直到从超级图层中删除它全部内容,希望文章能够帮你解决ios – 当它结束CAEmitterLayer的CAEmitter单元格的生命周期时如何删除CAEmitterLayer – 而不是重复直到从超级图层中删除它所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。