粒子雪花效果

粒子雪花效果

 

效果

 

源码

https://github.com/YouXianMing/Animations

//
//  EmitterSnowController.m
//  Animations
//
//  Created by YouXianMing on 15/12/21.
//  Copyright  2015年 YouXianMing. All rights reserved.
//

#import "EmitterSnowController.h"

@interface EmitterSnowController ()

@property (nonatomic, strong) CALayer   *movedMask;

@end

@implementation EmitterSnowController

- (void)viewDidLoad {

    [super viewDidLoad];
}

- (void)setup {

    [super setup];

    self.backgroundView.backgroundColor = [UIColor blackColor];

    // 创建粒子Layer
    CAEmitterLayer *snowEmitter = [CAEmitterLayer layer];

    // 粒子发射位置
    snowEmitter.emitterPosition = CGPointMake(120,0);

    // 发射源的尺寸大小
    snowEmitter.emitterSize  = self.contentView.bounds.size;

    // 发射模式
    snowEmitter.emitterMode  = kCAEmitterLayerSurface;

    // 发射源的形状
    snowEmitter.emitterShape = kCAEmitterLayerLine;

    // 创建雪花类型的粒子
    CAEmitterCell *snowflake = [CAEmitterCell emitterCell];

    // 粒子的名字
    snowflake.name = @"snow";

    // 粒子参数的速度乘数因子
    snowflake.birthRate = 20.0;
    snowflake.lifetime  = 120.0;

    // 粒子速度
    snowflake.velocity =10.0;

    // 粒子的速度范围
    snowflake.velocityRange = 10;

    // 粒子y方向的加速度分量
    snowflake.yAcceleration = 2;

    // 周围发射角度
    snowflake.emissionRange = 0.5 * M_PI;

    // 子旋转角度范围
    snowflake.spinRange = 0.25 * M_PI;
    snowflake.contents  = (id)[[UIImage imageNamed:@"snow"] CGImage];

    // 设置雪花形状的粒子的颜色
    snowflake.color      = [[UIColor whiteColor] CGColor];
    snowflake.redRange   = 2.f;
    snowflake.greenRange = 2.f;
    snowflake.blueRange  = 2.f;

    snowflake.scaleRange = 0.6f;
    snowflake.scale      = 0.7f;

    snowEmitter.shadowOpacity = 1.0;
    snowEmitter.shadowRadius  = 0.0;
    snowEmitter.shadowOffset  = CGSizeMake(0.0, 0.0);

    // 粒子边缘的颜色
    snowEmitter.shadowColor  = [[UIColor whiteColor] CGColor];

    // 添加粒子
    snowEmitter.emitterCells = @[snowflake];

    // 将粒子Layer添加进图层中
    [self.contentView.layer addSublayer:snowEmitter];

    // 形成遮罩
    UIImage *image      = [UIImage imageNamed:@"alpha"];
    _movedMask          = [CALayer layer];
    _movedMask.frame    = (CGRect){CGPointZero, image.size};
    _movedMask.contents = (__bridge id)(image.CGImage);
    _movedMask.position = self.contentView.center;
    snowEmitter.mask    = _movedMask;

    // 拖拽的View
    UIView *dragView = [[UIView alloc] initWithFrame:(CGRect){CGPointZero, image.size}];
    dragView.center  = self.contentView.center;
    [self.contentView addSubview:dragView];

    // 给dragView添加拖拽手势
    UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [dragView addGestureRecognizer:recognizer];
}

- (void)handlePan:(UIPanGestureRecognizer *)recognizer {

    // 拖拽
    CGPoint translation = [recognizer translationInView:self.contentView];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                         recognizer.view.center.y + translation.y);
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.contentView];

    // 关闭CoreAnimation实时动画绘制(核心)
    [CATransaction setDisableActions:YES];
    _movedMask.position = recognizer.view.center;
}

@end

细节

时间: 2024-12-22 22:34:57

粒子雪花效果的相关文章

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

 1 粒子 示例 2 类图关系 3 系统原生粒子 CCParticleSystem 所有粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad 点粒子和方形粒子系统,都继承了CCParticleSystem的所有属性 CCParticleExplosion 爆炸粒子效果 CCParticleFireworks 烟花粒子效果 CCParticleFire 火焰粒子效果 CCParticleMetepr 流行粒子效果 CCParticleSpira

Fireworks制作电视雪花效果

教程重点简述:通过渐变选项的调整实现动画效果. 教程开始之前,首先请看如下所示动画效果: 如何才能产生这种类似电视雪花效果的动画呢?通过滤镜.插件?不用,FW4里面已经为我们准备好了这种效果,请看后面的详细步骤: [注意]在开始本节的学习前,请大家首先参阅一下先前的文章"模拟条形码的制作",因为我们后面的操作是对上一节操作的继续,相关的内容这里就不再赘述了. 第一步.首先我们先和"模拟条形码的制作"一文简单的接一下头,在"模拟-"一文中,通过调整

电视雪花效果动画

教程开始之前,首先请看如下所示动画效果: 如何才能产生这种类似电视雪花效果的动画呢?通过滤镜.插件?不用,FW4里面已经为我们准备好了这种效果,请看后面的详细步骤: [注意]在开始本节的学习前,请大家首先参阅一下先前的文章"模拟条形码的制作",因为我们后面的操作是对上一节操作的继续,相关的内容这里就不再赘述了. 第一步.首先我们先和"模拟条形码的制作"一文简单的接一下头,在"模拟-"一文中,通过调整矩形的颜色调节手柄,已经出现了如图01所示的条形

javascript转换静态图片,增加粒子动画效果

  这篇文章主要介绍了javascript转换静态图片,增加粒子动画效果,非常的炫酷,需要的朋友可以参考下 使用getImageData接口获取图片的像素点,然后基于像素点实现动画效果,封装成一个简单的lib ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <!DOCTYPE html> <html> <head> <title>particle image<

PS暗黑小红帽雪花效果后期调色修图思路及方法

  冬天来了!关于冬天的摄影主题很多!这一次由摄影师@苏十一_ 为大家带来,暗黑小红帽雪花效果后期调色修图思路及方法,喜欢的可以借鉴 分类: PS图片处理 ps后期处理教程

实现雪花效果,现在做的是天上下“心”,怎么控制“心”不重叠?急!急!急!

问题描述 实现雪花效果,现在做的是天上下"心",怎么控制"心"不重叠?急!急!急! 直接上代码,输入'我想你'我会显示弹出下"心"的效果,并且优化一下代码. 求大神帮忙看下,怎么才能把"心"不重复? 这是html结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Android实现粒子雨效果_Android

本文实例介绍了Android实现粒子雨效果的实现过程,分享给大家供大家参考,具体内容如下 先看看效果图: 具体实现方法: 1.baseview主要是设定雨滴要实现的动作,只是先设定,也就是抽象方法,在子类中实现其方法 2.Rainitems封装雨滴类 3.Rainitems对雨滴集合创建到面板中,显示出来,具体实现就是在这个类中一.baseview封装类,子类继承后实现方法即可 public abstract class BaseView extends View { private contr

Android实现粒子雨效果

本文实例介绍了Android实现粒子雨效果的实现过程,分享给大家供大家参考,具体内容如下 先看看效果图: 具体实现方法: 1.baseview主要是设定雨滴要实现的动作,只是先设定,也就是抽象方法,在子类中实现其方法 2.Rainitems封装雨滴类 3.Rainitems对雨滴集合创建到面板中,显示出来,具体实现就是在这个类中 一.baseview封装类,子类继承后实现方法即可 public abstract class BaseView extends View { private cont

Android实现粒子爆炸效果的方法

本文实例讲述了Android实现粒子爆炸效果的方法.分享给大家供大家参考.具体如下: 1. Explosion.java文件: package net.obviam.particles.model; import android.graphics.Canvas; import android.graphics.Rect; import android.util.Log; public class Explosion { private static final String TAG = Expl