Swift - 无法通过另一个函数捕获引用本地函数

时间:2014-11-16 18:04:44

标签: function swift syntax-error

我试图在Swift上创建一个基于Balloons.playground的变化简单游戏(Apple在WWDC上展示)。 Apple提供了代码:

func fireCannon(cannon: SKNode) {
    let balloon = createRandomBalloon()
    displayBalloon(balloon, cannon)
    fireBalloon(balloon, cannon)
}

let leftBalloonCannon = scene.childNodeWithName("//left_cannon")!
let left = SKAction.runBlock { fireCannon(leftBalloonCannon) }

我做同样的事情(我想):

func displayFruit(xPos: CGFloat) -> Void {
    let fruit = SKSpriteNode(imageNamed: "Banana")
    fruit.size = CGSize(width: 100, height: 100)
    fruit.position = CGPoint(x:xPos, y: 800)
    fruit.physicsBody = SKPhysicsBody(texture: fruit.texture, size: fruit.size)
    fruit.physicsBody?.affectedByGravity = true       
    self.addChild(fruit)
}

let start = SKAction.runBlock { displayFruit(100) }

上面的代码我放在override func didMoveToView(view: SKView)

我收到错误:无法通过其他函数捕获来引用本地函数

我知道有很多相同的问题,但那里的解决方案似乎对我没有帮助。 这样做的正确方法是什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个本地功能:

override func didMoveToView(view: SKView) {
    func displayFruit() {
        // ...
    }
}

这不是本地功能:

override func didMoveToView(view: SKView) {
    // ...
}
func displayFruit() {
    // ...
}

让它看起来像第二个。