SnowScene.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import Foundation
  2. import SpriteKit
  3. class SnowScene: SKScene {
  4. let snowEmitterNode = SKEmitterNode(fileNamed: "snow.sks")
  5. override func didMove(to _: SKView) {
  6. guard let snowEmitterNode = snowEmitterNode else { return }
  7. snowEmitterNode.particleSize = CGSize(width: 50, height: 50)
  8. snowEmitterNode.particleLifetime = 2
  9. snowEmitterNode.particleLifetimeRange = 6
  10. addChild(snowEmitterNode)
  11. subscribe()
  12. }
  13. private func subscribe() {
  14. Foundation.NotificationCenter.default.addObserver(
  15. self,
  16. selector: #selector(didEnterBackground),
  17. name: UIApplication.didEnterBackgroundNotification,
  18. object: nil
  19. )
  20. Foundation.NotificationCenter.default.addObserver(
  21. self,
  22. selector: #selector(willEnterForeground),
  23. name: UIApplication.willEnterForegroundNotification,
  24. object: nil
  25. )
  26. }
  27. override func didChangeSize(_: CGSize) {
  28. guard let snowEmitterNode = snowEmitterNode else { return }
  29. snowEmitterNode.particlePosition = CGPoint(x: size.width / 2, y: size.height)
  30. snowEmitterNode.particlePositionRange = CGVector(dx: size.width, dy: size.height)
  31. }
  32. @objc private func didEnterBackground() {
  33. isPaused = true
  34. }
  35. @objc private func willEnterForeground() {
  36. isPaused = false
  37. }
  38. }