2017-04-14 9 views
1

CAEmitterCellカラープロパティのいくつかの奇妙な動作がありますが、正しく理解できません。CAEmitterCellカラープロパティが機能しない

私は黒

cell.contents = UIImage(named: "particle")?.cgImage 

を描かれたと私は緑

cell.color = UIColor.green.cgColor 

しかし、それには、それを変更しようとしているシンプルなの.pngファイルの内容と

let cell = CAEmitterCell() 

セルを持っています依然として黒色にレンダリングされる。 メディアアセットのこの画像の「レンダリング」プロパティを「テンプレート画像」に変更しようとしましたが効果がありません。

誰かが私が間違っていることを理解するのを助けることができますか?

+0

パーティクルの画像がありますか? –

+0

あなたの質問が分かりません。 – pulp

+0

プロジェクトのバンドルに名前パーティクルの画像がありますか? –

答えて

1

これは、CAEmitterCellの色を変更する方法の簡単な例です。

class ViewController: UIViewController { 

    override func viewDidAppear(_ animated: Bool) { 
     createParticles() 
    } 

    func createParticles() { 
     let particleEmitter = CAEmitterLayer() 

     particleEmitter.emitterPosition = CGPoint(x: view.center.x, y: -96) 
     particleEmitter.emitterShape = kCAEmitterLayerLine 
     particleEmitter.emitterSize = CGSize(width: view.frame.size.width, height: 1) 

     let red = makeEmitterCell(color: UIColor.red) 
     let green = makeEmitterCell(color: UIColor.green) 
     let blue = makeEmitterCell(color: UIColor.blue) 

     particleEmitter.emitterCells = [red, green, blue] 

     view.layer.addSublayer(particleEmitter) 
    } 

    func makeEmitterCell(color: UIColor) -> CAEmitterCell { 
     let cell = CAEmitterCell() 
     cell.birthRate = 3 
     cell.lifetime = 7.0 
     cell.lifetimeRange = 0 
     cell.color = color.cgColor 
     cell.velocity = 200 
     cell.velocityRange = 50 
     cell.emissionLongitude = CGFloat.pi 
     cell.emissionRange = CGFloat.pi/4 
     cell.spin = 2 
     cell.spinRange = 3 
     cell.scaleRange = 0.5 
     cell.scaleSpeed = -0.05 

     cell.contents = UIImage(named: "images")?.cgImage 
     return cell 
    } 

} 

アニメーションの例。 - あなたが持っているより少ないカラーバリエーション暗いイメージ:

enter image description here

+0

私はhttps://www.hackingwithswift.com/example-code/calayer/how-to-emit-particles-using-caemitterlayerから取られた全く同じコードを使用します – pulp

2

[OK]を、ケースには、初期画像の色でした。粒子エミッタに白い画像を使用する方が良いでしょう)

関連する問題