【问题标题】:Create a special graph using particles?使用粒子创建一个特殊的图形?
【发布时间】:2016-07-23 02:52:00
【问题描述】:

我想使用粒子创建某种实时图表,我在其中发射粒子并更改发射器位置。

问题是我找不到以直线水平发射粒子的方法。它们似乎有一些雪的影响(重力和旋转)。

有没有办法从左到右绘制像一条线一样的粒子??

func createParticles()
{
    let particleEmitter = CAEmitterLayer()

    particleEmitter.emitterPosition = CGPoint(x: self.center.x, y: 100)
    particleEmitter.emitterShape = kCAEmitterLayerPoint
    particleEmitter.emitterSize = CGSize(width: self.frame.size.width, height: 1)

    let red = makeEmitterCellWithColor(Globals.sharedInstance.palleteRed)
    let green = makeEmitterCellWithColor(Globals.sharedInstance.palleteRed)
    let blue = makeEmitterCellWithColor(Globals.sharedInstance.palleteRed)

    particleEmitter.emitterCells = [red, green, blue]

    self.layer.addSublayer(particleEmitter)

}



func makeEmitterCellWithColor(color: UIColor) -> CAEmitterCell {
    let cell = CAEmitterCell()
    cell.birthRate = 1
    cell.lifetime = 6.0
    cell.lifetimeRange = 0
    cell.color = color.CGColor
    cell.velocity = 100
    cell.velocityRange = 220
    cell.emissionLongitude = CGFloat(M_PI)
    cell.emissionRange = CGFloat(M_PI_4)
    cell.spin = 0
    cell.spinRange = 0
    cell.scaleRange = 0.15
    cell.scaleSpeed = -0.05

    cell.contents = UIImage(named: "particle")?.CGImage
    return cell
}

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我也挑战了类似的问题,这段代码帮助我克服了这个问题。我只是尝试减少雪效应的排放范围。

            let em : CAEmitterLayer = self.view.layer as! CAEmitterLayer
    
            em.renderMode = kCAEmitterLayerOldestFirst
            em.emitterShape = kCAEmitterLayerLine
            em.emitterMode = kCAEmitterLayerSurface
            em.emitterSize = CGSize(width: 10, height: 10)
            em.beginTime =  CACurrentMediaTime()
    
            em.emitterPosition = CGPointMake(self.view.frame.width/2, self.view.frame.height/2)
    
            let fireCell = CAEmitterCell()
            fireCell.contents = UIImage(named: "pink.png")!.CGImage
            fireCell.contentsRect = CGRect(x: 0, y: 0, width: 1.0, height: 1.0)
            fireCell.birthRate = 5.0
            fireCell.lifetime = 5
            fireCell.velocity = 200
            fireCell.scale = 1
    
            fireCell.color = UIColor.blueColor().CGColor
    
            // emissions angle stuff
            fireCell.emissionLongitude = CGFloat(M_PI/2)
            fireCell.emissionRange = CGFloat(M_PI_2 / 10.0)
    
            em.emitterCells = [fireCell]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 2016-07-31
      • 1970-01-01
      相关资源
      最近更新 更多