美文网首页
粒子动画效果实现和Swift面向协议开发

粒子动画效果实现和Swift面向协议开发

作者: 初学者_8f7b | 来源:发表于2017-12-13 17:49 被阅读0次

粒子动画效果实现是通过CALayer的子类,CAEmitterLayer实现。

实现粒子动画效果分以下几个步骤:

// 1.创建发射器

let layer = CAEmitterLayer()

// 2.发射器位置()

layer.position = point

//3.开启3D效果

layer.preservesDepth = true

// 4.创建粒子, 并且设置粒子相关的属性

var cells = [CAEmitterCell]()

for i in 0..<10{//10是图片的数量,你要显示几种粒子就是几

// 4.1 创建例子Cell

let cell = CAEmitterCell()

//4.2 粒子的速率

cell.velocity = 150

cell.velocityRange = 100

// 4.3 设置例子的大小

cell.scale = 0.7

cell.scaleRange = 0.3

//4.4 粒子的方向

//emissionLongitude设置垂直方向,emissionLatitude设置水平方向 粒子默认是水平向右即0度角方向

cell.emissionLongitude = CGFloat(-Double.pi / 2)//垂直往上方向

cell.emissionRange = CGFloat(Double.pi / 2 / 6)//30度角度

//4.5 设置粒子的存活时间

cell.lifetime = 3.0

cell.lifetimeRange = 1.5

//4.6 设置粒子的旋转

cell.spin = CGFloat(-Double.pi / 2)

cell.spinRange = CGFloat(Double.pi / 2 / 2)

//4.7 设置粒子每秒弹出的个数

cell.birthRate = 3

//4.8 粒子的图片

cell.contents = UIImage(named: "good\(i)_30x30")?.cgImage

cells.append(cell)

}

// 5.将粒子设置到发射器中

layer.emitterCells = cells

// 6.将发射器的layer添加到父layer中

view.layer.addSublayer(layer)

根据需要可以多设置几个发射器实现相应的效果

//面向协议开发

swift中,protocol 可以被类,枚举,结构体等任何东西遵守。将某一功能实现写在一个protocol的extension里面,遵守这个协议就具备这个功能。像一个零部件,拿过来就能用。

上面,粒子动画效果实现,用面向协议开发的思想实现如下

protocol Emitterable{

}

extension Emitterable where Self : UIViewController{//where 过滤遵守协议的对象,此处只有UIviewController能遵守协议

func startEmitting(_ point : CGPoint){

    //将上面粒子动画实现代码copy至此即可

}

func stopEmitting(){

view.layer.sublayers?.filter({$0.isKind(of: CAEmitterLayer.self)}).first?.removeFromSuperlayer()}

}

第一次写,记录自己学的东西,不到之处,请多指教,谢谢。

相关文章

  • 粒子动画效果

    粒子动画效果.gif 粒子动画效果11.gif Swift---面向协议开发 先创建一个snow.swift文件 ...

  • 粒子动画效果实现和Swift面向协议开发

    粒子动画效果实现是通过CALayer的子类,CAEmitterLayer实现。 实现粒子动画效果分以下几个步骤: ...

  • swift - 简单实现粒子效果

    创建一个 Swift file 文件,用协议实现粒子动画的发射和停止效果 使用方式(使用该效果的控制器,需要先遵守...

  • iOS - Swift 面向协议编程(一)

    OC无法做到面向协议开发,而Swift可以,因为Swift可以做到协议方法的具体实现,而OC不行 面向对象开发 传...

  • Swift-面向协议编程

    前言 OC无法做到面向协议开发,而Swift可以,因为Swift可以做到协议方法的具体实现,而OC不行 面向对象开...

  • swift面向协议编程--组件化

    苹果官方在2015的开发者大会上提出swift面向协议编程这个思想,下面用swift面向协议编程实现--组件化: ...

  • Swift - 面向协议

    Swift面向协议 利用协议实现前缀效果 定义一个结构体Lee ,用于生成计算属性 struct Lee { ...

  • 直播项目笔记(二)

    毛玻璃 + runtime全局pop + 面向协议编程 + 粒子动画 组合第一天封装CLOPageView和瀑布流...

  • canvas 会动的粒子效果

    particle-field canvas实现粒子场的动画效果 实现效果:粒子会动并且在一定范围内粒子之间出现连线...

  • 关于面向协议的开发之初探

    iOS 面向协议 Swift 在Swift语言开始盛行的当下,面向协议的开发,成为一个非常不错的思想,对整个工程架...

网友评论

      本文标题:粒子动画效果实现和Swift面向协议开发

      本文链接:https://www.haomeiwen.com/subject/yrjtpxtx.html