我如何从另一个函数 (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/