• CAEmitterLayer实现雪花效果


    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:粒子发射范围

    其他配置

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

  • 相关阅读:
    Asp.Net下的DataGrid的多层表头(转自csdn)
    C#中使用DirectX编程 (转)
    Factory Method来实现数据库操作的类 (转) 原文:冷风.NET
    (转)关于定时器,介绍得很好!
    (原创)如何让web页面产生服务器数据返回后仍然能够保留到用户输入的位置!
    最近加入了控件开发团队,发现一些基础的东西,转发上来方便大家学习(转)
    中国共享软件走向国际指南(转,有感而发!)
    水晶报表官方实例大全 (转)
    用VS.NET2003制作WEB应用程序的安装包 (转)
    开发 Windows Mobile 应用程序: FAQ(最近买了ppc,正好打算学习开发使用。)
  • 原文地址:https://www.cnblogs.com/ToBeTheOne/p/5762389.html
Copyright © 2020-2023  润新知