Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
[ad_1]
Background
I’ve a perform that creates a core animation emitter layer that animates myImage1
, within the code beneath.
I wish to change myImage1
to myImage2
to myImage3
and again to myImage1
after a delay of 10 seconds or each time a button is tapped.
I’ve tried unsuccessfully. The code myEmitterChange()
is executed however the picture doesn’t change within the core animation emitter layer. What must be corrected within the code beneath?
Questions
1 – How do I alter the emitter layer picture as soon as the CAEmitterLayer is added to a view ?
2 – How do I utterly cease the CAEmitterLayer animation and take away it solely from the view?
Code
import UIKit
class ViewController: UIViewController {
var myEmitterLayer = CAEmitterLayer()
var myEmitterCell = CAEmitterCell()
override func viewDidLoad() {
myEmitter()
self.carry out(#selector(self.myEmitterChange), with: nil, afterDelay: 10)
}
@objc func myEmitterChange() {
print("Did I Change?")
myEmitterCell.shade = UIColor.orange.cgColor
myEmitterCell.contents = UIImage(named: "myImage2")!.cgImage
}
func myEmitter() {
myEmitterCell.birthRate = 1
myEmitterCell.shade = UIColor.blue.cgColor
myEmitterCell.contents = UIImage(named: "myImage1")!.cgImage
myEmitterCell.lifetime = 15
myEmitterCell.scale = 0.25
myEmitterCell.scaleSpeed = 0.025
myEmitterCell.velocity = 50
myEmitterCell.velocityRange = 50
myEmitterCell.spin = -2
myEmitterLayer.beginTime = CACurrentMediaTime()
myEmitterLayer.birthRate = 1
myEmitterLayer.emitterMode = CAEmitterLayerEmitterMode.define
myEmitterLayer.emitterPosition = CGPoint(x: (view.bounds.measurement.width * 0.5), y: (view.bounds.measurement.top * 0.5))
myEmitterLayer.emitterShape = CAEmitterLayerEmitterShape.circle
myEmitterLayer.emitterSize = CGSize(width: 10, top: 10)
myEmitterLayer.renderMode = CAEmitterLayerRenderMode.oldestLast
myEmitterLayer.emitterCells = [myEmitterCell]
view.layer.addSublayer(myEmitterLayer)
}
}
[ad_2]