zoukankan      html  css  js  c++  java
  • UI基础--烟花动画

    首先我们先导入系统的库:

    添加下面的代码即可:

    #import "FireworksViewController.h"
    
    @interface FireworksViewController ()
    
    @end
    
    @implementation FireworksViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.view.backgroundColor = [UIColor whiteColor];
        self.title = @"烟花动画";
        
        //设置重底部发射cells
        CAEmitterLayer *fireworksEmitter = [CAEmitterLayer layer];
        CGRect viewBounds = self.view.layer.bounds;
        //发射位置
        fireworksEmitter.emitterPosition = CGPointMake(viewBounds.size.width / 2.0, viewBounds.size.height - 200);
        //发射源大小
        fireworksEmitter.emitterSize = CGSizeMake(viewBounds.size.width / 2.0, 0.0);
        //发射模式
        fireworksEmitter.emitterMode = kCAEmitterLayerOutline;
        //发射形状
        fireworksEmitter.emitterShape = kCAEmitterLayerLine;
        //渲染模式(kCAEmitterLayerAdditive与kCAEmitterLayerUnordered相比较, 合并重叠的部分使看上去更亮);
        fireworksEmitter.renderMode = kCAEmitterLayerAdditive;
        //初始化随机产生的种子
        fireworksEmitter.seed = (arc4random()%100) + 1;
        // Create the rocket
        CAEmitterCell *rocket = [CAEmitterCell emitterCell];
        //设置每秒产生的粒子数
        rocket.birthRate = 2.0;
        //周围发射角度
        rocket.emissionRange = 0.0 * M_PI;
        //速度
        rocket.velocity = 350;
        //速度范围
        rocket.velocityRange = 200;
        //粒子的y方向的加速度分量
        rocket.yAcceleration = 75;
        //设置生命周期,即在屏幕上要显示多长时间
        rocket.lifetime = 1.02;
        
        rocket.contents = (id)[[UIImage imageNamed:@"DazRing"] CGImage];
        //粒子尺寸
        rocket.scale = 0.2;
        //粒子颜色
        rocket.color = [[UIColor redColor]CGColor];
        //粒子的颜色green,red,blue 能改变的范围
        rocket.greenRange = 1.0;
        rocket.redRange = 1.0;
        rocket.blueRange = 1.0;
        //子旋转角度范围
        rocket.spinRange = M_PI;
        
        // the burst object cannot be seen, but will spawn the sparks
        // we change the color here, since the sparks inherit its value
        CAEmitterCell* burst = [CAEmitterCell emitterCell];
        
        burst.birthRate            = 1.0;        // at the end of travel
        burst.velocity            = 0;
        burst.scale                = 2.5;
        //粒子red,blue,green 在生命周期内的改变速度
        burst.redSpeed            =-1.5;        // shifting
        burst.blueSpeed            =+1.5;        // shifting
        burst.greenSpeed        =+1.0;        // shifting
        
        burst.lifetime            = 0.35;
        
        // and finally, the sparks
        CAEmitterCell* spark = [CAEmitterCell emitterCell];
        
        spark.birthRate            = 400;
        spark.velocity            = 120;
        spark.emissionRange        = 2* M_PI;    // 360 deg
        spark.yAcceleration        = 75;        // gravity
        spark.lifetime            = 2;
        
        spark.contents            = (id) [[UIImage imageNamed:@"桃心"] CGImage];
        //缩放比例速度
        spark.scaleSpeed        =-0.2;
        spark.greenSpeed        =-0.1;
        spark.redSpeed            = 0.4;
        spark.blueSpeed            =-0.1;
        spark.alphaSpeed        =-0.25;
        
        //子旋转角度
        spark.spin                = 2* M_PI;
        
        //子旋转角度范围
        spark.spinRange            = 2* M_PI;
        
        // putting it together
        fireworksEmitter.emitterCells    = [NSArray arrayWithObject:rocket];
        rocket.emitterCells                = [NSArray arrayWithObject:burst];
        burst.emitterCells                = [NSArray arrayWithObject:spark];
        [self.view.layer addSublayer:fireworksEmitter];
        
        //设置背景图片
        UIImage *image = [UIImage imageNamed:@"1.jpg"];
        
        //__bridge id
        self.view.layer.contents = (__bridge id)(image.CGImage);
        
    }
    
    
    @end

    效果:

  • 相关阅读:
    [转]权限树中Checkbox的操作[Asp.Net2.0]
    [转]IE点击链接没有反应或打开新窗口出现一个空白框(地址栏空白)的解决方法
    [引]VS2005 之 Visual Basic 编程语言介绍
    [文摘20070816]家(周国平)
    Linux 下zip包的压缩与解压
    SOSO发布国内首家高清街景地图 引领地图换代
    VC 获取当前工作目录和执行目录的一些方法
    设置vim 默认显示行号
    利用脚本将文字插入到图片或进行多个图片拼接
    ImageMagick操作合并图像
  • 原文地址:https://www.cnblogs.com/LzwBlog/p/5724829.html
Copyright © 2011-2022 走看看