Tag: caemitterlayer

[核心动画]您对CAEmitterLayer有什么了解?

CAEmitterLayer是一种高性能的粒子引擎,旨在创建诸如火,雨,烟,雪等的粒子动画。 CAEmitterLayer是用于定义粒子效果的CAEmitterCell实例集合的容器。 您可以创建一个或多个CAEmitterCell对象作为模板 对于不同的粒子类型。 CAEmitterLayer负责根据这些模板实例化粒子流。 发射极层和电池特性如何? CAEmitterLayer属性 CAEmitterLayer的属性控制粒子系统的位置和形状。 在birthRate上指定的属性诸如birthRate , lifetime和velocity重复值。 它们作为乘数工作。 您可以使用单个值来加快或增加整个粒子系统。 其他重要特性: renderMode :定义如何将粒子单元渲染到图层中。 preservesDepth :定义3D粒子系统是扁平化为单层(默认情况下)还是可以与其容器层的3D空间中的其他层融合。 您可以在此处检查CAEmitterLayer的许多其他可配置属性。 CAEmitterCell属性 CAEmitterCell的属性分为三类: 粒子特定属性的起始值 。 例如, color属性定义将与contents图像中的颜色组合的混合颜色。 特定属性的值在粒子之间变化的范围。 例如,如果将emissionRange属性设置为2π,则可以在360度半径内的任何方向上发射粒子。 如果指定较小的值,则可以为粒子创建圆锥形漏斗。 特定值随时间的变化 。 例如,如果将alphaSpeed设置为-0.1,则粒子的alpha值将每秒减少0.1。 当粒子从发射器离开时,它还会为粒子创建淡入淡出效果。 最重要的属性是: CGImage :分配一个CGImage用作图像。 color :设置要应用于每个粒子的颜色。 alphaSpeed :设置在单元的整个生命周期内,粒子淡出或淡入(以秒为单位)的速度。 birthRate :设置birthRate要创建多少个粒子。 lifetime :设置每个粒子应生存的时间(以秒为单位)。 velocity :设置每个粒子的基本移动速度。 velocityRange :设置可改变像元速度的量。 scale :设置应有多大的粒子(全尺寸为1.0)。 scaleRange :设置可改变单元格规模的数量。 spin :设置应用于单元的旋转速度。 spinRange :设置单元格旋转的数量。 […]

触摸在触摸点后延迟移动CAEmitterLayer …

我偶然发现了一个问题:解决第一个问题,现在当手指在屏幕上移动时,我的粒子轨迹被延迟到触摸位置的后面。 当我通过覆盖来初始化CAEmitterLayer时,它工作的很好 + (Class) layerClass { //configure the UIView to have emitter layer return [CAEmitterLayer class]; } 并用。初始化 fireEmitter = (CAEmitterLayer*)self.layer; 我改变了 fireEmitter = [CAEmitterLayer layer]; fireEmitter.frame = self.bounds; [self.layer addSublayer:fireEmitter]; 现在发射器单元就像艺妓一样跟着移动的触摸点 这是为什么? 因为我现在在chnaged发射器正在发射的层? 请帮忙! 日Thnx

animationCAEmitterCell颜色属性

我有一个CAEmitterCell ,我已经设置了一个特定的颜色。 文档说, 这个属性是可以animation的 ,我想为我的游戏中的不同玩家(所有人在开始时select他们的颜色)在不同的颜色之间进行animation处理。 当我设置它时,这是我的EmitterCell : // // Emitter Cells // // 'New Emitter' cell configuration newEmitter = [CAEmitterCell emitterCell]; newEmitter.scaleSpeed = 10; newEmitter.lifetime = 2.481715; newEmitter.velocity = 332.3636968085106; newEmitter.contents = newemitterImg; newEmitter.name = @"New Emitter"; newEmitter.color = [[UIColor colorWithRed:0.50 green:0.00 blue:1.00 alpha:1.00] CGColor]; newEmitter.scaleRange = 4.178236607142859; newEmitter.lifetimeRange = 1.6; newEmitter.greenRange = -2.775558e-17; newEmitter.birthRate […]

来自CAEmitterLayer的初始粒子不会从emitterPosition开始

我的目标是制作一个类似爆炸的animation,在短时间内发射很​​多粒子。 我的问题是,CAEmitterLayer开始发射时会添加“未来”粒子,使其看起来像animation已经运行了一段时间。 我怎样才能禁用或解决这个问题? 当我增加birthRate时,我只想要粒子从emitterPosition开始出现,而不是沿着CAEmitterCell的预计生命期。 任何帮助表示赞赏。 #import "EmitterView.h" @interface EmitterView () @property CAEmitterLayer* emitter; @end @implementation EmitterView – (void) awakeFromNib { [super awakeFromNib]; self.emitter = (CAEmitterLayer*)self.layer; CAEmitterCell* snowflake = [CAEmitterCell emitterCell]; snowflake.contents = (id)[[UIImage imageNamed: @"snowflake"] CGImage]; snowflake.lifetime = 3; snowflake.birthRate = 1; snowflake.velocity = 50; snowflake.emissionRange = 3.1415; self.emitter.birthRate = 0; self.emitter.emitterCells = [NSArray arrayWithObject: […]

iOS 7 CAEmitterLayer不适当地产生粒子

奇怪的问题我似乎无法解决只在iOS 7地方, CAEmitterLayer会在出生率初始设置为非零值时在屏幕上错误地生成粒子。 就好像它计算了图层将来的状态。 // Create black image particle CGRect rect = CGRectMake(0, 0, 20, 20); UIGraphicsBeginImageContext(rect.size); CGContextFillRect(UIGraphicsGetCurrentContext(), rect); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // Create cell CAEmitterCell *cell = [CAEmitterCell emitterCell]; cell.contents = (__bridge id)img.CGImage; cell.birthRate = 100.0; cell.lifetime = 10.0; cell.velocity = 100.0; // Create emitter with particles emitting from a line on […]