iOS动画开发----粒子系统---彩带效果

参考博文地址:http://my.oschina.net/u/2340880/blog/485095?fromerr=bgjLq4Mw

一、粒子发射器

iOS中的粒子效果有两部分组成,一部分为发射器,设置例子发射的宏观属性,另一部分是粒子单元,用于设置相应的粒子属性。粒子发射器是基于Layer层,他的全名叫做:CAEmitterLayer。其中常用的属性如下:

@property(copy) NSArray *emitterCells;

粒子单元数组,例如你在绘制火焰的效果时,你可以创建两个单元,一个单元负责烟雾,一个单元负责火苗。

@property float birthRate;

粒子的创建速率,默认为1/s。

@property float lifetime;

粒子的存活时间。默认为1S。

@property CGPoint emitterPosition;

发射器在xy平面的中心位置

@property CGFloat emitterZPosition;

发射器在Z平面的位置

@property CGSize emitterSize;

发射器的尺寸大小

@property CGFloat emitterDepth;

发射器的深度,在某些模式下会产生立体效果

@property(copy) NSString *emitterShape;

发射器的形状,这个参数的几个系统字符串如下:


1

2

3

4

5

6

7

8

9

10

11

12

CA_EXTERN NSString * const kCAEmitterLayerPoint

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0); //点的形状,粒子从一个点发出

CA_EXTERN NSString * const kCAEmitterLayerLine

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//线的形状,粒子从一条线发出

CA_EXTERN NSString * const kCAEmitterLayerRectangle

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//矩形形状,粒子从一个矩形中发出

CA_EXTERN NSString * const kCAEmitterLayerCuboid

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//立方体形状,会影响Z平面的效果

CA_EXTERN NSString * const kCAEmitterLayerCircle

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//圆形,粒子会在圆形范围发射

CA_EXTERN NSString * const kCAEmitterLayerSphere

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//球型

@property(copy) NSString *emitterMode;

发射器的发射模式,参数如下:


1

2

3

4

5

6

7

8

CA_EXTERN NSString * const kCAEmitterLayerPoints

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//从发射器中发出

CA_EXTERN NSString * const kCAEmitterLayerOutline

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//从发射器边缘发出

CA_EXTERN NSString * const kCAEmitterLayerSurface

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//从发射器表面发出

CA_EXTERN NSString * const kCAEmitterLayerVolume

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//从发射器中点发出

@property(copy) NSString *renderMode;

发射器渲染模式,参数如下:


1

2

3

4

5

6

7

8

9

10

CA_EXTERN NSString * const kCAEmitterLayerUnordered

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//这种模式下,粒子是无序出现的,多个发射源将混合

CA_EXTERN NSString * const kCAEmitterLayerOldestFirst

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//这种模式下,声明久的粒子会被渲染在最上层

CA_EXTERN NSString * const kCAEmitterLayerOldestLast

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//这种模式下,年轻的粒子会被渲染在最上层

CA_EXTERN NSString * const kCAEmitterLayerBackToFront

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//这种模式下,粒子的渲染按照Z轴的前后顺序进行

CA_EXTERN NSString * const kCAEmitterLayerAdditive

    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//这种模式会进行粒子混合

@property BOOL preservesDepth;

是否开启三维空间效果

@property float velocity;

粒子的运动速度

@property float scale;

粒子的缩放大小

@property float spin;

粒子的旋转位置

@property unsigned int seed;

初始化随机的粒子种子

二、粒子单元

设置好了粒子发射器,我们还需要初始化一些粒子单元,设置具体粒子的属性,我们使用到的类是CAEmitterCell这个类。

+ (instancetype)emitterCell;

类方法创建发射单元

@property(copy) NSString *name;

设置发射单元的名称

@property(getter=isEnabled) BOOL enabled;

是否允许发射器渲染

@property float birthRate;

粒子的创建速率

@property float lifetime;

粒子的生存时间

@property float lifetimeRange;

粒子的生存时间容差

@property CGFloat emissionLatitude;

粒子在Z轴方向的发射角度

@property CGFloat emissionLongitude;

粒子在xy平面的发射角度

@property CGFloat emissionRange;

粒子发射角度的容差

@property CGFloat velocity;

粒子的速度

@property CGFloat velocityRange;

粒子速度的容差

@property CGFloat xAcceleration;

@property CGFloat yAcceleration;

@property CGFloat zAcceleration;

x,y,z三个方向的加速度

@property CGFloat scale;

@property CGFloat scaleRange;

@property CGFloat scaleSpeed;

缩放大小,缩放容差和缩放速度

@property CGFloat spin;

@property CGFloat spinRange;

旋转度与旋转容差

@property CGColorRef color;

粒子的颜色

@property float redRange;

@property float greenRange;

@property float blueRange;

@property float alphaRange;

粒子在rgb三个色相上的容差和透明度的容差

@property float redSpeed;

@property float greenSpeed;

@property float blueSpeed;

@property float alphaSpeed;

粒子在RGB三个色相上的变化速度和透明度的变化速度

@property(strong) id contents;

渲染粒子,可以设置为一个CGImage的对象

@property CGRect contentsRect;

渲染的范围

三、喷射彩带的效果

- (void)startAnimation
{
    //设置发射器
    _streamerEmitter=[[CAEmitterLayer alloc]init];
    _streamerEmitter.emitterPosition=CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2);
    _streamerEmitter.emitterSize=CGSizeMake(self.view.frame.size.width-100, 20);
    _streamerEmitter.renderMode = kCAEmitterLayerAdditive;
    _streamerEmitter.preservesDepth = YES;

    //发射单元
    //彩带
    CAEmitterCell * smoke = [CAEmitterCell emitterCell];
    smoke.birthRate=100;
    smoke.lifetime=3.0;
    smoke.lifetimeRange=1;
    smoke.scale = 0.5;
    smoke.scaleRange = 0.5;
    smoke.color=[UIColor colorWithRed:0 green:1 blue:0 alpha:0.2].CGColor;
    smoke.alphaRange = 1;
    smoke.redRange =255;
    smoke.blueRange = 22;
    smoke.greenRange = 1.5;
    smoke.contents=(id)[[UIImage imageNamed:@"彩花.png"]CGImage];
    [smoke setName:@"smoke"];

    smoke.velocity=200;
    smoke.velocityRange=50;
    smoke.emissionLongitude=M_PI+M_PI_2;
    smoke.emissionRange=M_PI_2;
    smoke.spin = M_PI_2;
    smoke.spinRange = M_PI_2;

    _streamerEmitter.emitterCells=[NSArray arrayWithObjects:smoke,nil];
    [self.myView.layer addSublayer:_streamerEmitter];
}
时间: 2024-10-27 09:19:34

iOS动画开发----粒子系统---彩带效果的相关文章

iOS动画开发之五——炫酷的粒子效果

iOS动画开发之五--炫酷的粒子效果 在上几篇博客中,我们对UIView层的动画以及iOS的核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫酷,亦或是你灵光一现,想用UIKit框架写出一款炫酷的休闲游戏,那个有一个东西可以帮到你:iOS的粒子效果引擎. 一.粒子发射器 iOS中的粒子效果有两部分组成,一部分为发射器,设置例子发射的宏观属性,另一部分是粒子单元,用于设置相应的粒子属性.粒子发射器是基于Layer层,没错,又是Layer,他的全名叫做: CA

iOS动画开发之一——UIViewAnimation动画的使用

iOS动画开发之一--UIViewAnimation动画的使用 一.简介 一款APP的成功与否,除了完善的功能外,用户体验也占有极大的比重,动画的合理运用,可以很好的增强用户体验.iOS开发中,常用的动画处理有UIView动画编程和核心动画编程,其中UIView动画使用简便,开发中应用十分广泛.这篇博客,主要讨论UIView的动画使用. 二.UIView动画的几个方法 + (void)animateWithDuration:(NSTimeInterval)duration animations:

iOS动画开发之二——UIView动画执行的另一种方式

iOS动画开发之二--UIView动画执行的另一种方式 上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:http://my.oschina.net/u/2340880/blog/484457,这篇博客再介绍一种更加传统的执行UIView的动画的方法. 这种方式相比如block的方式,显得要麻烦一些,apple官方也推荐我们使用带block的创建动画的方式,我们可以将编程重心更多的放在动画逻辑的实现上.使用begin和commit方式主要分为三个

iOS动画开发之三——UIView的转场切换

iOS动画开发之三--UIView的转场切换 前两篇博客中,我们分别介绍了UIView动画的两种使用方式,分别为,带block的方式:http://my.oschina.net/u/2340880/blog/484457 ,传统的属性配置的方式:http://my.oschina.net/u/2340880/blog/484538.通过UIView动画的类方法,我们可以十分方便的使View某些属性改变的同时拥有动画效果.这篇博客主要讨论View切换的动画操作. 两个方法: + (void)tra

iOS常用开发资源整理

在行--专家付费咨询 杂项 App Release Checklist—iOS App发布清单. Hey Focus—帮助你专注于一个任务. Objective Cloud—Objective C App云端服务. Thermal—核心数据编辑器. Big Papoo—替代安装Adhoc App. Tweriod—分析你的推特和followers的推特找出最佳发布时间. Helpscout—用户邮件处理支持. Hipmob—应用内实时聊天. Flat Mobile App Design in P

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

我们知道,一个游戏少不了声音,一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来,顺便在这节中会说下简单的粒子系统和文件存储. 一.声音的播放: 1.新建一个cocos2d工程添加相应的声音图片资源: 播放声音所用到的内容: 代码: 这里可以先在RootViewController.mm里面设置屏幕 禁止旋转 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientat

cocos2d-x ios游戏开发初认识(七) 简单的动画

前面有一节说了帧动画,就是让精灵改变自己的位置.形状.大小来实现相应的动作,这讲主要是要通过一些方法来实现精灵的移动,产生各种炫丽的动画,也可能让你找到一点游戏场景. 下面具体根据代码分析: 为了清晰最好将前几节的代码注释掉. //根据前面的知识先创建一个菜单 CCMenuItemFont *item =CCMenuItemFont::create("开始游戏",this, menu_selector(MainScene::onMenuItem));//点击事件 //添加到菜单栏里面

ios 动画效果CATransition笔记

初学ios开发,很多概念还不清楚,所以只有边学边做例子.又怕学了后面忘了前面,因此用自己的博客来纪录自己的学习历程,也是对自己学习不要懈怠做个监督. 刚学ios做动画效果.因为ios封装得很好,实现ios的漂亮动画效果也很简单,却因为我自己的粗心落了一个字母 导致纠结了一天,这个教训必须记住,同时也懂得了调试技能在编程里地位也是非常重要的存在. 实现ios动画有两种方法:一种UIView层面的,一种是使用CATransition. [objc] view plaincopy - (void)vi

iOS项目开发实战——设置视图的透明度改变动画

在iOS中 ,透明度的改变可以让View视图以一种渐变的效果动态的出现或者消退,非常有意思.这里我们将会对一个View控件的色块执行透明度改变的动画.关于其他的动画效果可以参考我的其他几篇博客<iOS项目开发实战--制作视图的平移动画以及解决移动异常问题>,<iOS项目开发实战--多个视图的平移动画与闭包函数的声明与调用>. (1)在Main.storyboard中拖入一个View,并且绑定到代码中. (2)实现代码如下: import UIKit class OpacityVie