您的位置:首页 > 移动开发 > IOS开发

IOS开发之粒子效果

2015-08-15 12:11 417 查看
粒子效果非常漂亮,在应用中可能用的不多,但是可以给用户眼前一亮的感受。

粒子效果主要用到两个类:CAEmitterLayer和CAEmitterCell.

步骤如下:

1.添加框架

#import <QuartzCore/QuartzCore.h>

2.设定两个类

CAEmitterLayer和CAEmitterCell

首先定义一个View

- (id)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

fireEmitter = (CAEmitterLayer *)self.layer;

fireEmitter.emitterPosition = CGPointMake(50, 50);

fireEmitter.emitterSize = CGSizeMake(10, 10);

fireEmitter.renderMode = kCAEmitterLayerAdditive;

CAEmitterCell *fire = [CAEmitterCell emitterCell];

fire.birthRate = 0;

fire.lifetime = 3.0;

fire.lifetimeRange = 0.5;

fire.color = [UIColor colorWithRed:1 green:0 blue:0 alpha:0.1].CGColor;

fire.contents = (id)[[UIImage imageNamed:@"Particles_fire"]CGImage];

fire.velocity = 10;

fire.velocityRange = 20;

fire.emissionRange = M_PI_2;

fire.scaleSpeed = 0.3;

fire.spin = 0.5;

[fire setName:@"fire"];

//add the cell to the layer and we're done

fireEmitter.emitterCells =
[NSArray arrayWithObject:fire];

}

return self;

}

- (void)setEmitterPositionFromTouch:(UITouch *)t

{

fireEmitter.emitterPosition =
[t locationInView:self];

}

- (void)setIsEmitting:(BOOL)isEmitting

{

[fireEmitter setValue:[NSNumber numberWithInt:isEmitting?200:0]forKeyPath:@"emitterCells.fire.birthRate"];

}

+ (Class)layerClass

{

return [CAEmitterLayer class];

}

3.在ViewController中控制它

particle = [[ZXCParticleVeiw alloc]initWithFrame:CGRectMake(100, 200, 100, 100)];

[self.view addSubview:particle];

- (void)touchesMoved:(NSSet *)touches
withEvent:(UIEvent *)event

{

[particle setEmitterPositionFromTouch:[touches anyObject]];

[particle setIsEmitting:YES];

}

- (void)touchesEnded:(NSSet *)touches
withEvent:(UIEvent *)event

{

[particle setIsEmitting:NO];

}

- (void)touchesCancelled:(NSSet *)touches
withEvent:(UIEvent *)event

{

[particle setIsEmitting:NO];

}

转载地址:http://www.cnblogs.com/andyque/archive/2012/01/10/2317968.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: