从 SKS 文件加载节点时使用的初始化程序
Posted
技术标签:
【中文标题】从 SKS 文件加载节点时使用的初始化程序【英文标题】:Initializer used when loading nodes from SKS file 【发布时间】:2016-06-29 17:02:37 【问题描述】:我正在创建SKSpriteNode
的子类,例如Player
并在我的 *.sks 文件中使用自定义类 Player
标记 SKSpriteNode
。在 *.swift 中,我正在使用:self.childNode(withName: "myNodesName")
加载节点。好吧,这很好用,但我还想修改用于此过程的构造函数。
如果我从 *.sks 访问 *.swift 文件中的 SKSpriteNode
,则使用 SKSpriteNode
的哪个构造函数
self.childNode(withName: "myNodesName") as? Player
?
【问题讨论】:
【参考方案1】:调用了什么构造函数?
从 sks 文件创建节点时,SpriteKit 确实使用此初始化程序
init?(coder aDecoder: NSCoder)
如何在 Player 中实现它?
你有一个 Player 类。你可以这样实现构造函数
class Player: SKSpriteNode
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
【讨论】:
调用什么实例? 它被某种解析器(我相信)调用,负责将 SKS 文件转换为 SKScene。 所以可能没有办法改变它? @cocoseis:你需要做什么? 我希望播放器在初始化时知道它的兄弟(节点)。以上是关于从 SKS 文件加载节点时使用的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章
如何从嵌入工作区的 Swift Playground 加载 .sks 文件?
SKSpriteNode 在 init(NSCoder) 中设置颜色
使用 loadNibNamed 加载视图时,如何在 UIView 上调用便利初始化程序?
将发射器节点添加到 sks 文件并使用它 - XCode 6.0 + swift