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)
}
}
}
答案 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() {
}
现在订单无关紧要。