基于CAEmitterLayer的雨天、下雪、火焰、烟花粒子效果demo

电脑杂谈  发布时间:2019-08-25 21:05:15  来源:网络整理

下雨下雪下冰雹_先梦见下雪然后在下雨_ios下雪下雨的

基于CAEmitterLayer的雨天、下雪、火焰、烟花粒子效果demo

demo源码地址:

CAEmitterLayer是继承自CALayer的layer类,拥有众多属性ios下雪下雨的,其中此demo用到的属性有:

emitterCells:是拿来与CAEmitterLayer关联显示粒子效果的,是CAEmitterCell的实例化对象,必须有值;

emitterPosition:粒子排放位置,默认值是(0, 0);

emitterShape:粒子排放形状ios下雪下雨的,默认值是kCAEmitterLayerPoint;

emitterSize:粒子排放的大小,取决于emitterShape,可忽略;

emitterMode:粒子排放模式,默认值是kCAEmitterLayerVolume;

renderMode:粒子渲染方式,默认值是kCAEmitterLayerUnordered.

CAEmitterCell继承自NSObject且遵守一定协议的类,拥有众多属性,其中此demo用到的属性有:

birthRate:粒子每秒产生个数;

lifetime:粒子的生命周期;

emissionRange:粒子排放的范围;

velocity:粒子的速率;

velocityRange:粒子速度变化值;

alphaSpeed:粒子生命周期内色彩差异速度;

contents:CAEmitterCell的内容,是CGImageRef类型。

下雨下雪下冰雹_ios下雪下雨的_先梦见下雪然后在下雨

核心代码

// 下雨、下雪

/**

* 设置emitterLayer的属性

*/

- (void)initEmitterLayerProperties {

self.emitterLayer.emitterSize = self.frame.size;

self.emitterLayer.emitterPosition = CGPointMake(self.frame.origin.x, self.frame.origin.y);

}

/**

* 设置emitterCell的属性并与emitterLayer关联显示效果

*

* @param weather 天气名称

*/

- (void)showWeather:(NSString *)weather {

CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];

emitterCell.birthRate = 20.f;

emitterCell.lifetime = 100.f;

先梦见下雪然后在下雨_ios下雪下雨的_下雨下雪下冰雹

emitterCell.velocity = 10.f;

emitterCell.velocityRange = 3.f;

emitterCell.yAcceleration = 5.f;

emitterCell.emissionRange = 6 * M_2_PI;

emitterCell.contents = (__bridge id _Nullable)([UIImage imageNamed:weather].CGImage);

self.emitterLayer.emitterCells = @[emitterCell];

}

// 火焰

/**

* 设置emitterLayer的属性

*/

- (void)initEmitterLayerProperties {

self.emitterLayer.emitterSize = self.frame.size;

self.emitterLayer.emitterPosition = CGPointMake(self.frame.origin.x, self.frame.origin.y);

self.emitterLayer.emitterMode = kCAEmitterLayerPoints;

self.emitterLayer.renderMode = kCAEmitterLayerBackToFront;

}

/**

ios下雪下雨的_下雨下雪下冰雹_先梦见下雪然后在下雨

* 设置emitterCell的属性并与emitterLayer关联显示效果

*/

- (void)show {

CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];

emitterCell.birthRate = 200.f;

emitterCell.lifetime = 10.f;

emitterCell.velocity = 10.f;

emitterCell.velocityRange = 15.f;

emitterCell.emissionRange = 2 * M_PI;

emitterCell.alphaSpeed -= 0.5f;

emitterCell.contents = (__bridge id _Nullable)([UIImage imageNamed:@"fire_selected"].CGImage);

self.emitterLayer.emitterCells = @[emitterCell];

}

// 烟花

/**

* 设置emitterLayer的属性

*/

- (void)initEmitterLayerProperties {

ios下雪下雨的_先梦见下雪然后在下雨_下雨下雪下冰雹

self.emitterLayer.emitterSize = self.frame.size;

self.emitterLayer.emitterPosition = CGPointMake(self.frame.origin.x, self.frame.origin.y);

self.emitterLayer.emitterMode = kCAEmitterLayerPoints;

self.emitterLayer.renderMode = kCAEmitterLayerBackToFront;

}

/**

* 设置emitterCell的属性并与emitterLayer关联显示效果

*/

- (void)show {

CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];

emitterCell.birthRate = 50.f;

emitterCell.lifetime = 6.f;

emitterCell.velocity = 50.f;

emitterCell.velocityRange = 100.f;

emitterCell.emissionRange = 2 * M_PI;

emitterCell.alphaSpeed -= 0.5f;

emitterCell.contents = (__bridge id _Nullable)([UIImage imageNamed:@"fireworks_selected"].CGImage);

self.emitterLayer.emitterCells = @[emitterCell];

}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-120574-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 明世宗朱厚熜
        明世宗朱厚熜

        兼顾监视外国军舰动向

      • 冯伉
        冯伉

        你马云的说法很好

      热点图片
      拼命载入中...