iOS 系统的CoreGraphic框架可以简单的实现粒子系统的效果:
实现粒子系统主要用到两个类CAEmitterLayer和CAEmitterCell
下面是例子,雪花飘落的效果
//添加背景图
UIImage*bgImage = [UIImageimageNamed:@"背景.jpg"];
self.view.backgroundColor= [UIColor colorWithPatternImage:bgImage];
//粒子图层
CAEmitterLayer*snowLayer = [CAEmitterLayerlayer];
snowLayer.backgroundColor= [UIColorredColor].CGColor;
//发射位置
snowLayer.emitterPosition=CGPointMake(0,0);
//发射源的尺寸
snowLayer.emitterSize=CGSizeMake(640,1);
//发射源的形状
snowLayer.emitterMode=kCAEmitterLayerSurface;
//发射模式
snowLayer.emitterShape=kCAEmitterLayerLine;
//存放粒子种类的数组
NSMutableArray*snow_array =@[].mutableCopy;
for(NSIntegeri=1; i<4; i++) {
//snow
CAEmitterCell*snowCell = [CAEmitterCellemitterCell];
snowCell.name=@"snow";
//产生频率
snowCell.birthRate=15.0f;
//生命周期
snowCell.lifetime=30.0f;
//运动速度
snowCell.velocity=1.0f;
//运动速度的浮动值
snowCell.velocityRange=10;
//y方向的加速度
snowCell.yAcceleration=2;
//抛洒角度的浮动值
snowCell.emissionRange=0.5*M_PI;
//自旋转角度范围
snowCell.spinRange=0.25*M_PI;
//粒子透明度在生命周期内的改变速度
snowCell.alphaSpeed=2.0f;
//cell的内容,一般是图片
NSString*snow_str = [NSStringstringWithFormat:@"snow%ld",i];
snowCell.contents= (id)[UIImageimageNamed:[NSStringstringWithFormat:@"%@.png",snow_str
]].CGImage;
[snow_arrayaddObject:snowCell];
}
//添加到当前的layer上
snowLayer.shadowColor= [[UIColorredColor]CGColor];
snowLayer.cornerRadius=1.0f;
snowLayer.shadowOffset=CGSizeMake(1,1);
snowLayer.emitterCells= [NSArrayarrayWithArray:snow_array];
[self.view.layerinsertSublayer:snowLayeratIndex:0];