ios - Swift 4.2 - 类型 '(____) -> () -> (____)' 的值没有成员 'childNode'

标签 ios swift xcode sprite-kit

我在 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?) {

    }
}

有谁知道发生了什么事吗?如果没有,还有其他方法来访问 Sprite 。

最佳答案

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

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

更改:

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

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

关于ios - Swift 4.2 - 类型 '(____) -> () -> (____)' 的值没有成员 'childNode',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51698434/

相关文章:

cocoa - 更改包制造商创建的包的图标

iphone - 在 iPhone 4s 上运行应用程序时出现 Xcode 4.3.2 错误

iOS : malloc: *** error for object 0x6e78580: incorrect checksum for freed object

ios - 使用 Mapbox 更改 map 上的注释图像

App Delegate 中的 iOS 6 Objective-C 后启动画面

ios - 如何动态计算桌面高度?

ios - 按下主页按钮后 NSTimer 不触发

swift - 在溢出的情况下 double 如何快速截断

ios - Xcode "Undefined symbols for architecture i386"错误,代码没有任何变化,突然

ios - 尝试以编程方式在 ScrollView 中添加带有 SWIFT 约束的 UIView 失败