此代码位于if语句中,用于检查用户是否触摸了正确的按钮。如果未返回true,则以下代码将运行。问题是,当从父项中删除live
时,行let live = childNodeWithName("liveBall") as! SKSpriteNode
会返回此错误:
致命错误:在打开Optional时意外发现nil 值。
这必须是因为childNodeWithName("liveBall")
不再存在。
override func didMoveToView(view: SKView) {
let live = SKSpriteNode(texture: purpleTexture)
live.position = CGPointMake(self.frame.size.width * 0.68, self.frame.size.height * 0.93)
live4.name = "liveBall"
self.addChild(live)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let live = childNodeWithName("liveBall") as! SKSpriteNode
if(intersectsNode(live)){
live.removeFromParent()
}
}
如何避免此错误?
答案 0 :(得分:0)
这意味着没有“liveBall”节点作为孩子。你确定它被添加了吗?似乎在:
中有一个拼写错误(编号4)live4.name = "liveBall"
您可以尝试添加以下节点:
var mySprite: SKSpriteNode = childNodeWithName("mySprite") as SKSpriteNode
答案 1 :(得分:0)
要为调用RemoveFromParent()
的函数添加安全性,只需添加一个新的布尔变量,在调用RemoveFromParent()
时将其自身更改为true,并使用条件检查来防止它发生两次。