2015-10-07 3 views
0

Этот код находится в инструкции if, которая проверяет, подходит ли пользователь к правильной кнопке. Если не вернётся true, этот код ниже будет запущен. Проблема заключается в том, что, когда live удаляется из родительской линии let live = childNodeWithName("liveBall") as! SKSpriteNode возвращает эту ошибку:Ошибка при попытке удалить узел из родителя

fatal error: unexpectedly found nil while unwrapping an Optional value.

Это должно быть, потому что 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

Это означает, что в качестве дочернего узла нет «liveBall». Вы уверены, что это добавлено? Кажется, что есть опечатка (номер 4) в:

live4.name = "liveBall" 

Вы можете попробовать добавить узел так:

var mySprite: SKSpriteNode = childNodeWithName("mySprite") as SKSpriteNode 
0

Чтобы добавить безопасность в вашу функцию, которая вызывает RemoveFromParent(), просто добавить новый Логическая переменная, которая изменяется на true, когда вызывается RemoveFromParent() и использует проверку состояния, чтобы предотвратить ее появление в два раза.

Смежные вопросы