gpt4 book ai didi

swift - 如何在 Playground 上访问我的 ViewController 和 Scene 瞬间?

转载 作者:行者123 更新时间:2023-11-28 06:58:43 26 4
gpt4 key购买 nike

我创建了一个 playground 并将我的 Swift 文件添加到它的 source 文件夹中,这样我就可以访问类并根据需要实例化它们,但我需要更多地使用 playground! xcode我在 SpriteKit 中有一个典型的 Sprites 定位问题,我需要用 poayground 测试 sprite 位置和手势触摸点位置,我的游戏中每组 Sprites 都有不同的 anchor 节点,每个我都面对三个坐标系

  1. 原点在左上角的手势坐标系
  2. 在屏幕中心中继的 SpriteKit 坐标系
  3. 在等距 map 上显示每个 Sprite 的等距 map 坐标系。

通过添加一个缩放工具(使用捏手势)作为 Cereal 盐,我有一个非常复杂的几何计算,每个转换本身都非常简单但是结合这些仿射变换是一团糟,我不喜欢我的代码写作。

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

我曾经使用 println 和断点来观察我的变量,但这还不够,我发现 playground 非常有用,所以我想一定有一种方法可以让我在那里观察我的变量或在实际数据上测试我的函数我正在测试我的游戏。

问题:

是否可以在我的 Playground 中使用手势触摸点?他们正在传递给我的 handle 手势功能,并且所有假设编写或转换这些触摸点的测试代码都必须在 handle 手势功能中编写,问题是我可以在我的 Playground 上使用它们吗?

最佳答案

我相信您必须公开您的类(class)才能在 Playground 上使用它们。并且可以在 playground 中使用触摸并与之交互。

看看这个。

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 - 如何在 Playground 上访问我的 ViewController 和 Scene 瞬间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com