我已经创建了一个playground并将我的Swift文件添加到它的源文件夹中,这样我就可以访问类并根据需要实例化它们,但是我需要更多地使用playground!
我有一个典型的问题与精灵定位在精灵,我需要测试精灵的位置和手势触摸点位置与poayground,我有不同的锚节点为每组精灵在我的游戏和每个我面对的三坐标系
原点在左上角的手势坐标系
屏幕中心中继的SpriteKit坐标系
等轴测地图坐标系,显示等轴测地图上的每个精灵。
通过添加一个缩放工具(使用夹点手势)作为纹理盐,我有一个非常复杂的几何计算,每一个转换本身非常简单,但是连接这些仿射变换是完全混乱的,我不喜欢我正在编写的代码。
我需要一些测试,看看一个仿射变换如何影响前一个变换,以及如何转换这三个坐标系之间的坐标。
我曾经使用println和断点来观察我的变量,但这还不够,我发现playground非常有用,所以我想一定有一种方法可以在那里观察我的变量,或者在测试我的游戏时通过真实的数据来测试我的函数。
问题:
在我的操场上有手势触控点吗?它们将传递给我的handle手势函数,所有假设要编写或转换这些接触点的测试代码都必须在handle手势函数中编写,问题是我可以在操场上使用它们吗?

最佳答案

我相信你必须公开你的课程才能在操场上使用。
在操场上使用触摸和互动是可能的。
看看这个。

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

关于swift - 如何在操场上访问ViewController和Scene实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32632478/

10-10 00:17