错误:在声明之前无法捕获... iOS swift

时间:2015-04-05 01:14:53

标签: swift

My error出现在“loadMan”函数中,表示在声明之前无法捕获“loadmanTextures”。我不明白它有什么问题.....我已经在下面添加了“loadmanTextures”的功能。我该怎么办???

import SpriteKit


class GameScene: SKScene {
var man:SKSpriteNode
var runningManTextures = [SKTexture]()


override init(size: CGSize){

    self.man = SKSpriteNode(texture: SKTexture(imageNamed: "man_0"))



    super.init(size:size)
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override func didMoveToView(view: SKView) {

    func loadMan() {
        loadManTextures()
        man.position.y -= man.size.height/2
        addChild(man)
    }

    func loadManTextures() {
        var runningAtlas = SKTextureAtlas(named: "man")
        for i in 1...3 {
            var textureName = "man_\(i)"
            var temp = runningAtlas.textureNamed(textureName)
            runningManTextures.append(temp)
        }
    }

}

1 个答案:

答案 0 :(得分:0)

错误信息非常清楚。也许您不了解自己代码的结构?你有意或无意地将两个函数放在另一个函数中(也称为函数函数本地函数):

override func didMoveToView(view: SKView) {
    func loadMan() {
        loadManTextures()
    }
    func loadManTextures() {
    }
}

我不知道你为什么这样做。但是如果你这样做,那么第一个函数就不能调用第二个函数,因为现在这是可执行代码 - loadManTextures声明现在必须执行以便这个函数存在< / em>,首先,在它被调用之前:

override func didMoveToView(view: SKView) {
    func loadManTextures() {
    }
    func loadMan() {
        loadManTextures()
    }
}

当然,不使用函数函数会更有意义,但要使它们成为所有方法:

override func didMoveToView(view: SKView) {
}
func loadMan() {
    loadManTextures()
}
func loadManTextures() {
}

现在订单无关紧要。