Swift:使用未解析的标识符“addChild”

Posted

技术标签:

【中文标题】Swift:使用未解析的标识符“addChild”【英文标题】:Swift: Use of unresolved identifier 'addChild' 【发布时间】:2015-05-25 21:52:07 【问题描述】:
import SpriteKit

class GameScene: SKScene 
    
    let player = SKSpriteNode(imageNamed: "Gun")

    override func didMoveToView(view: SKView) 
        
        backgroundColor = SKColor.whiteColor()    
        player.position = CGPoint(x: size.width * 0.1, y: size.height * 0.5)
        addChild(player)
    


func random() -> CGFloat 

    return CGFloat(Float(arc4random()) / 0xFFFFFFFF)


func random(#min: CGFloat, max: CGFloat) -> CGFloat 

    return random() * (max - min) + min


func addMonster() 
        
    let monster = SKSpriteNode(imageNamed: "monster")        
    let actualY = random(min: monster.size.height/2, monster.size.height - monster.size.height/2)

    monster.position = CGPoint(x: monster.size.width + monster.size.width/2, y: actualY)

    // Here's the error:
    addChild(monster)

    let actualDuration = random(min: CGFloat(2.0), CGFloat(4.0))        
    let actionMove = SKAction.moveTo(CGPoint(x: -monster.size.width/2, y: actualY), duration: NSTimeInterval(actualDuration))
    let actionMoveDone = SKAction.removeFromParent()

    monster.runAction(SKAction.sequence([actionMove, actionMoveDone]))        

我在一个教程网站上找到了这个,我打算在某种程度上对其进行修改。但是,当我尝试运行代码时,它会显示“使用未解析的标识符 'addChild'”。我不确定如何解决这个问题。

【问题讨论】:

很奇怪,因为 SKScene 是 SKNode 的子类,它提供了 addChild() 方法。 很奇怪。我直接从本教程中复制了它:raywenderlich.com/84434/sprite-kit-swift-tutorial-beginners 我确实修复了一些其他错误,但我看不出这是错误的原因。 我在操场上看到了同样的事情。我想我记得在操场上的一些事情。您是否在非游乐场 Xcode 项目中尝试过? 我在非 Playground 项目中看到了同样的问题。但仅限于 addMonster() 函数中。 我投了你也应该投的答案,也请接受他的答案,是正确的。 【参考方案1】:

您的函数似乎在类之外,这导致编译器找不到方法addChild

你需要在类括号之间包含一个类的所有相关方法,在同一个文件中是不够的。

【讨论】:

我也是刚发现的,因为找到了类def中的addChild。 把它放在类括号中是否修复了错误? 啊,解决了。还有其他一些错误,但我解决了。非常感谢!我会赞成你的回答,但我没有足够的代表。 有人做到了! :)

以上是关于Swift:使用未解析的标识符“addChild”的主要内容,如果未能解决你的问题,请参考以下文章

iOS [Swift]:解析 Facebook 登录“使用未解析的标识符‘权限’”

在 Swift 中使用未解析的标识符“参数”

Swift:使用未解析的标识符“json”

使用未解析的标识符“Singleton”Swift 3

Swift:函数中的 UIAlert - 使用未解析的标识符“存在”

Swift 中“使用未解析的标识符”