【问题标题】:Swift Subclass methods not being recognizedSwift 子类方法未被识别
【发布时间】:2020-03-20 13:20:49
【问题描述】:

我正在使用 SpriteKit,并且我有一个为 SKSpriteNode 类编写的子类。

class PlayFieldNode: SKSpriteNode {

    var myFunction: (()->())?

    // other methods

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?){
        if let f = myFunction {
            f()
        }
    }

}

在我想做的 PlayFieldNode 的子节点内,

self.parent!.myFunction = self.myFunction

当我尝试这样做时,它甚至无法编译,并且会发出警告,例如 Value of type 'SKNode' has no member 'myFunction'

我对使用 swift 比较陌生,我是否遗漏了一些涉及继承或闭包的内容?我已经仔细检查并确保父级实际上是我想要使用的 PlayFieldNode。

【问题讨论】:

  • self.parent 是如何声明的?

标签: swift sprite-kit


【解决方案1】:

是的,因为父类是基类SKNode,它对你的myFunction一无所知,所以你首先需要检测父类是否is-a你的子类,所以使用

if let parent = self.parent as? PlayFieldNode {
   parent.myFunction = self.myFunction
}

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2023-01-08
    • 2012-02-28
    • 2014-07-29
    相关资源
    最近更新 更多