【问题标题】:Swift 4.2 - Value of type '(____) -> () -> (____)' has no member 'childNode'Swift 4.2 - '(____) -> () -> (____)' 类型的值没有成员 'childNode'
【发布时间】:2018-08-05 21:36:01
【问题描述】:

我在 swift 中创建了一个自定义类来管理我正在制作的游戏的主菜单我将它链接到 SKScene 文件并尝试创建一个常量来访问该变量,但我收到了这个错误:无法使用实例成员'属性初始化器中的 childNode'。

import SpriteKit
import GameplayKit

class MainMenu: SKScene {

    let startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName")

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    }
}

有人知道发生了什么吗?如果没有,还有其他方法可以访问精灵。

【问题讨论】:

  • 您必须在方法内运行该行。

标签: ios swift xcode sprite-kit


【解决方案1】:

let 变量的初始值必须是可以在执行init() 方法之前初始化的常量。这反过来意味着他们不能引用self

一种解决方法是让它们成为lazy 实例变量,它们在首次使用时被初始化(根据定义,在init() 返回对对象的引用之前不会发生这种情况)。在这种情况下,惰性变量将使用闭包的结果进行初始化。

变化:

let startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName")

lazy var startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName") as! SKSpriteNode

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多