zoukankan      html  css  js  c++  java
  • swift 粒子效果

    1.

    override func viewDidLoad() {
            super.viewDidLoad()
            let rect = CGRect(x: 0.0, y: -70.0,  view.bounds.width,
                              height: 50.0)
            let emitter = CAEmitterLayer()
            emitter.frame = rect
            view.layer.addSublayer(emitter)
            emitter.emitterShape = CAEmitterLayerEmitterShape.rectangle
            
            //kCAEmitterLayerPoint
            //kCAEmitterLayerLine
            //kCAEmitterLayerRectangle
            
            emitter.emitterPosition = CGPoint(x: rect.width/2, y: rect.height/2)
            emitter.emitterSize = rect.size
            
            let emitterCell = CAEmitterCell()
            emitterCell.contents = UIImage(named: "appLogo")!.scaleImageToWidth(30).cgImage
            emitterCell.birthRate = 120  //每秒产生120个粒子
            emitterCell.lifetime = 3    //存活1秒
            emitterCell.lifetimeRange = 3.0
            
            emitter.emitterCells = [emitterCell]  //这里可以设置多种粒子 我们以一种为粒子
            emitterCell.yAcceleration = 70.0  //给Y方向一个加速度
            emitterCell.xAcceleration = 20.0 //x方向一个加速度
            emitterCell.velocity = 20.0 //初始速度
            emitterCell.emissionLongitude = CGFloat(-Double.pi) //向左
            emitterCell.velocityRange = 200.0   //随机速度 -200+20 --- 200+20
            emitterCell.emissionRange = CGFloat(Double.pi/2) //随机方向 -pi/2 --- pi/2
            //emitterCell.color = UIColor(red: 0.9, green: 1.0, blue: 1.0,
            //   alpha: 1.0).CGColor //指定颜色
            emitterCell.redRange = 0.3
            emitterCell.greenRange = 0.3
            emitterCell.blueRange = 0.3  //三个随机颜色
            
            emitterCell.scale = 0.8
            emitterCell.scaleRange = 0.8  //0 - 1.6
            emitterCell.scaleSpeed = -0.15  //逐渐变小
            
            emitterCell.alphaRange = 0.75   //随机透明度
            emitterCell.alphaSpeed = -0.15  //逐渐消失
            
            
        }

    2. UIimage拓展

    extension UIImage {
        
        /// 将当前图片缩放到指定宽度
        ///
        /// - parameter  指定宽度
        ///
        /// - returns: UIImage,如果本身比指定的宽度小,直接返回
        func scaleImageToWidth(_  CGFloat) -> UIImage {
            
            // 1. 判断宽度,如果小于指定宽度直接返回当前图像
            if size.width < width {
                return self
            }
            
            // 2. 计算等比例缩放的高度
            let height = width * size.height / size.width
            
            // 3. 图像的上下文
            let s = CGSize( width, height: height)
            // 提示:一旦开启上下文,所有的绘图都在当前上下文中
            UIGraphicsBeginImageContext(s)
            
            // 在制定区域中缩放绘制完整图像
            draw(in: CGRect(origin: CGPoint.zero, size: s))
            
            // 4. 获取绘制结果
            let result = UIGraphicsGetImageFromCurrentImageContext()
            
            // 5. 关闭上下文
            UIGraphicsEndImageContext()
            
            // 6. 返回结果
            return result!
        }
    }
  • 相关阅读:
    c#命名空间
    MUTC 2 B Meeting point1 二分
    高斯消元模板
    MUTC 2 C Meeting point2 切比雪夫距离orz
    MUTC 2 E Save the dwarfs DP?
    Uva 10859 Placing Lampposts 树形dp
    Uva 11552 Fewest Flops 字符串dp
    Uva 10891 Game of Sum dp博弈
    MUTC 2 D Matrix 并查集
    Uva 1456 Cellular Network 概率dp
  • 原文地址:https://www.cnblogs.com/qingzZ/p/10592180.html
Copyright © 2011-2022 走看看