CAEmitterLayer 简介

在iOS5.0中,Apple引入了CAEmitterLayer层,CAEmitterLayer是一个高性能的粒子效果引擎,被用来创建实时粒子动画,如:烟雾,火,雨等效果。CAEmitterLayer其实是一个粒子容器,负责按照开发者的设定,成产出一个或者多个粒子样式,然后将其模板化并大量生产。

实例:雪花效果

如果大家突然需要一个雪花效果,我相信大部分人的第一反应是使用定时器创建大量的ImageView对象,然后给每个ImageView对象添加动画。这种做法一方面操作复杂,一方面性能方面堪忧.既然现在大家都了解了CAEmitterLayer引擎,因此下面使用CAEmitterLayer引擎实现这个效果,看下其的便捷性和性能方面的优势。

1.创建一个CAEmitterLayer对象

CAEmitterLayer *emitter = [CAEmitterLayer layer];
emitter.frame = self.view.bounds;
[self.containerView.layer addSublayer:emitter];
emitter.renderMode = kCAEmitterLayerAdditive;
emitter.emitterPosition = CGPointMake(emitter.frame.size.width / 3.0, -75);

该layer的创建方式与基本CALayer层没什么区别,区别在于属性,下面将会简要介绍:

  • rederMode:控制着在视觉上粒子图片是如何混合的。我们在实例中设置为了KCAEmitterLayerAdditive,它表示这:合并粒子重叠部分的亮度使其更加明亮,其他效果可以尝试下。
  • emitterPosition:表示粒子发射器的中心位置

注意:CAEmitterLayer的属性控制着整个粒子系统的位置和形状,一些属性比如birthRate在粒子模板中也有。这些属性会以相乘的方式作用在一起。

2.创建一个粒子模板

CAEmitterCell *cell = [[CAEmitterCell alloc] init];
cell.contents = (__bridge id)[UIImage imageNamed:@"面板_雪花"].CGImage;
cell.birthRate = 5;
cell.lifetime =7.0 ;
cell.alphaSpeed = 0;
cell.velocity = 150;
cell.velocityRange = 100;
cell.emissionLongitude = M_PI / 2;
cell.emissionRange = M_PI /2 ;
emitter.emitterCells = @[cell];

值得一提的属性如下介绍:

  • birthRate:表示粒子的生产速度,值越大,生产的速度越大
  • lifetime:表示粒子的生命周期,在该范围内,粒子不会消失(当然,透明度可能也会让粒子显示出消失的效果)
  • alphaSpeed:粒子透明度的变化速度,为负值时说明透明度慢慢变低
  • velocity:表示粒子的位移加速度
  • velocityRange:表示粒子的位移加速范围 与上一个参数配合使用
  • emissionLongitude:粒子发射中心方向
  • emissionRange:粒子发射范围

其他配置

我们按照上面的方法创建两个发射源,放在视图的顶部,设置雪花飘落的范围与方向,然后给视图配置一个美感的背景图,就可以实现一个雪花效果了。而且,我们做的工作其实很少,性能也有大大的提高。不多说,看效果

CAEmitterLayer实现雪花效果的更多相关文章

  1. ios 基于CAEmitterLayer的雪花,烟花,火焰,爱心等效果demo(转)

    转载自:http://blog.csdn.net/mad2man/article/details/16898369 分类: cocoa SDK2013-11-23 11:52 388人阅读 评论(0) ...

  2. ios 基于CAEmitterLayer的雪花,烟花,火焰,爱心等效果demo

    demo功能:基于CAEmitterLayer的雪花,烟花,火焰,爱心等效果. demo说明:基于Core Animation的粒子发射系统,粒子用CAEmitterCell来初始化. 粒子画在背景层 ...

  3. CAEmitterLayer实现粒子效果

    在iOS 5中,苹果引入了一个新的CALayer子类叫做CAEmitterLayer.CAEmitterLayer是一个高性能的粒子引擎,被用来创建实时例子动画如:烟雾,火,雨等等这些效果. CAEm ...

  4. Html页面雪花效果的实现

    简单介绍 昨天修改了一下博客所用的模板,冬天来了,给自己的博客加点雪花,感觉更有意境. 百度找到了非常多的结果,最终还是选用了cfs.snow.js,很赞压缩之后只有1kb左右,而且不会影响页面使用, ...

  5. 6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果

     1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad ...

  6. 使用CAEmitterLayer实现下雪效果

    效果图: 代码部分: #import "ViewController.h" @interface ViewController () @end @implementation Vi ...

  7. 使用CAEmitterLayer产生粒子效果

    ViewController.m #import "ViewController.h" @implementation ViewController - (void)viewDid ...

  8. 天气渐热,来片雪花降降温——Android自定义SurfaceView实现雪花效果

    实现雪花的效果其实也可以通过自定义View的方式来实现的(SurfaceView也是继承自View的),而且操作上也相对简单一些,当然也有一些不足啦... 相对于View,SurfaceView有如下 ...

  9. JS实现雪花效果

    演示效果 http://www.9696e.com/demo/snow/ 春节之前新一博客也会一直挂着的. 加载链接 <script src="http://www.9696e.com ...

随机推荐

  1. 关于 MonoDevelop on Linux 单步调试问题的解决

    在 MonoDevelop 中默认是关闭对外部程序集(.dll)的调试,可通过如下步骤来解决这个问题. 通过菜单[Edit]-[Preferences]-[Debugger]进入到调试器的设置页,把“ ...

  2. spring mvc 项目聚合

    创建一个maven 项目当父项目 创建时选择默认就可以 创建完成后 修改 pom.xml文件  把 packaging 的war改为pom <modelVersion>4.0.0</ ...

  3. PHP处理0e开头md5哈希字符串缺陷/bug

    PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他 ...

  4. a版本冲刺第六天

    队名:Aruba   队员: 黄辉昌 李陈辉 林炳锋 鄢继仁 张秀锋 章  鼎 学号 昨天完成的任务 今天做的任务 明天要做的任务 困难点 体会 408 学习<第一行代码> 学习活动的消息 ...

  5. 使用css打造形形色色的形状!

    使用css打造形形色色的形状! css是非常强大的工具,如果我们掌握的好,那么许多复杂的形状不需要使用图片而直接使用css完成即可,这不仅有利于减少http请求以增强性能还便于日后的管理和维护,一举两 ...

  6. IP地址,子网掩码、默认网关,DNS服务器是什么意思?

    (一)  问题解析001.   问:  IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真 ...

  7. [Nhibernate]一级缓存

    目录 写在前面 文档与系列文章 一级缓存 一个例子 一级缓存管理 总结 写在前面 上篇文章介绍了nhibernate中对象的三种状态,通过对象的三种状态,很容易想到缓存. 什麽是缓存? 有时候,某些数 ...

  8. Android网络操作的几种方法

    安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERN ...

  9. 【荐】PHP采集工具curl快速入门教程

    为什么要用CURL? CURL(Client URL Library Functions)是一个利用URL语法在命令行方式下工作的文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTT ...

  10. PHP简单 对象(object) 与 数组(array) 的转换

    数组是PHP的灵魂,非常强大,但有时候面向对象编程也是挺方便的,数组 与 对象 之间切换也是常有的事: /** * 数组 转 对象 * * @param array $arr 数组 * @return ...