Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ViewController.swift
- // ConvexLine
- //
- // Created by MizushimaYusuke on 2017/09/24.
- // Copyright © 2017 MizushimaYusuke. All rights reserved.
- //
- import UIKit
- import SpriteKit
- class ViewController: UIViewController {
- weak var scene: SKScene?
- override func viewDidLoad() {
- super.viewDidLoad()
- setupScene()
- createLines()
- }
- func setupScene() {
- let sv = SKView(frame: view.bounds)
- let s = SKScene(size: sv.frame.size)
- sv.presentScene(s)
- view.addSubview(sv)
- scene = s
- }
- func createLines() {
- stride(from: 0, through: view.frame.maxY, by: 40).enumerated().forEach { i, y in
- let line = createConvexLine()
- line.position = CGPoint(x: view.center.x, y: y)
- let d = view.frame.maxX
- if (i%2 == 0) {
- line.zRotation = .pi
- }
- line.childNode(withName: "maskBar")?.run(.sequence([.wait(forDuration: 10.0), .moveBy(x: d, y: 0, duration: 10.0)]))
- }
- }
- func createConvexLine() -> SKNode {
- UIGraphicsBeginImageContextWithOptions(CGSize(width: 80, height: 40), false, 0)
- UIColor(hue: 0.5, saturation: 0.9, brightness: 0.7, alpha: 1).set()
- if let ctx = UIGraphicsGetCurrentContext() {
- ctx.fill(CGRect(x: 0, y: 0, width: 80, height: 40))
- ctx.setBlendMode(.clear)
- ctx.fill(CGRect(x: 20, y: 20, width: 40, height: 16))
- ctx.fill(CGRect(x: 30, y: 4, width: 20, height: 30))
- }
- let img = UIGraphicsGetImageFromCurrentImageContext()!
- UIGraphicsEndImageContext()
- let texture = SKTexture(image: img)
- let node = SKNode()
- stride(from: 0, through: view.frame.maxX, by: 80).forEach { x in
- let part = SKSpriteNode(texture: texture)
- part.position = CGPoint(x: x - view.frame.midX, y: 0)
- node.addChild(part)
- }
- node.position = view.center
- scene?.addChild(node)
- let maskBar = SKSpriteNode(color: scene!.backgroundColor, size: CGSize(width: view.frame.maxX, height: 40))
- maskBar.name = "maskBar"
- node.addChild(maskBar)
- return node
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement