swift - 如何在函数中引用变量?

标签 swift sprite-kit

我如何从另一个函数 (collide) 调用我在一个函数 (hello) 中创建的太阳对象?

func collide() {
        if (CGRectIntersectsRect(player.frame, **sun.frame**)) {
            [EndGame];
        }

 func hello() {
        let sun = SKSpriteNode(imageNamed: "Sun")
}

最佳答案

你不能 - sun 变量是 hello 函数的局部变量,它不存在于它的作用域之外。

如果 collide 是从 hello 调用的,您可以将它作为参数传递:

func collide(sun: SKSpriteNode) {
    if (CGRectIntersectsRect(player.frame, sun.frame)) {
        [EndGame];
    }
}

func hello() {
    let sun = SKSpriteNode(imageNamed: "Sun")
    ...
    collide(sun)
}

否则,如我所想,如果这些是类的实例方法,只需将 sun 变量转换为实例属性即可:

class Test {
    private var sun: SKSpriteNode?

    func collide(sun: SKSpriteNode) {
        if let sun = self.sun {
            if (CGRectIntersectsRect(player.frame, sun.frame)) {
                [EndGame];
            }
        }
    }

    func hello() {
        self.sun = SKSpriteNode(imageNamed: "Sun")
    }
}

关于swift - 如何在函数中引用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28339569/

相关文章:

ios - 将带有图像的按钮添加到 UISearchBar

swift - 在 Swift 中使用 FMDB 从多个表中进行选择

ios - 创建暂停菜单的最佳方法是什么?

swift - 检测节点是否触摸帧的最佳方法

ios - Sprite Kit和IOS开发

ios - 将 SKShader 应用于多个图层

ios - 包含值的 Firebase 结果数 - iOS Swift

xcode - 以 ActionSheet 样式访问图片库

ios - 使用swift 3点击单元格时如何在Avplayer中播放来自url的视频

ios - 复杂的敌人行为和模式