如何在操场上访问我的ViewController和Scene瞬间?

时间:2015-09-17 14:09:57

标签: swift sprite-kit swift-playground

我创建了一个游乐场并将我的Swift文件添加到其文件夹中,这样我就可以访问类并根据需要实例化它们,但我需要更多地使用游乐场! xcode 我在SpriteKit中有Sprites定位的典型问题,我需要使用poayground测试精灵位置和手势触点位置,我在游戏中为每组Sprite设置不同的锚节点,每个我面对三个坐标系< / p>

  1. 手势坐标系,其原点是左上角
  2. 在屏幕中心进行中继的SpriteKit坐标系
  3. 等轴测图地图坐标系,显示等轴测图上的每个精灵。
  4. 通过添加一个缩放设施(使用捏合手势)作为谷物盐,我有一个非常复杂的几何计算,每个转换本身非常简单,但是这些仿射变换是完全混乱,我不喜欢我的代码写作。

    我需要进行一些测试,以了解一个仿射变换如何影响前一个变换,以及如何在这三个坐标系之间转换坐标。

    我曾经使用println和断点来观察我的变量,但这还不够,我发现游乐场非常有用所以我想必须有一种方法让我可以在那里观察我的变量或测试我的功能而不是真实的数据我正在测试我的游戏。

    问题:

    我的操场上可以有手势触摸点吗?他们正在传递给我的手柄手势功能,所有想要写入或转换这些触摸点的测试代码都必须用手柄手势功能编写,问题是我可以在我的操场上使用它们吗?

1 个答案:

答案 0 :(得分:1)

我相信你必须公开你的课程才能在操场上使用它们。 并且可以在游乐场使用触摸并与之互动。

看看这个。

import PlaygroundSupport
import UIKit

struct Pokemon {
    let id: UInt
    let name: String
}

class PokedexViewController: UITableViewController {
    let pokemons: [Pokemon] = [
        Pokemon(id: 1, name: "Bulbasaur"),
        Pokemon(id: 2, name: "Ivysaur"),
        Pokemon(id: 3, name: "Venusaur"),
        Pokemon(id: 4, name: "Charmander"),
        Pokemon(id: 5, name: "Charmeleon"),
        Pokemon(id: 6, name: "Charizard"),
        Pokemon(id: 7, name: "Squirtle"),
        Pokemon(id: 8, name: "Wartortle"),
        Pokemon(id: 9, name: "Blastoise")
    ]

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func numberOfSections(in tableView: UITableView) -> Int {
         return 1
    }

     override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return pokemons.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .default, reuseIdentifier: "PokemonTableViewCell")

    let pokemon = pokemons[indexPath.row]
    cell.textLabel?.text = pokemon.name

    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let pokemon = pokemons[indexPath.row]
    let viewController = PokemonViewController(frame: tableView.frame, pokemon: pokemon)

    navigationController?.pushViewController(viewController, animated: true)
}

}

class PokemonViewController: UIViewController {
    private let pokemon: Pokemon

    init(frame: CGRect, pokemon: Pokemon) {
        self.pokemon = pokemon
        super.init(nibName: nil, bundle: nil)

        self.title = self.pokemon.name
        self.view = UIView(frame: frame)
        self.view.backgroundColor = UIColor.white
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

let rootViewController = PokedexViewController()
rootViewController.title = "Pokedex"

let navigationController = UINavigationController(rootViewController:rootViewController)
PlaygroundPage.current.liveView = navigationController.view
相关问题