2015-03-22 3 views
2
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 ». Я не знаю, как это исправить.Swift: использование неразрешенного идентификатора 'addChild'

+0

Weird, потому что SKScene является подклассом SKNode, который предоставляет метод addChild(). – clearlight

+0

Это очень странно. Я скопировал это прямо из этого учебника: http://www.raywenderlich.com/84434/sprite-kit-swift-tutorial-beginners Я исправил еще несколько ошибок, но я не вижу причин, по которым это ошибка. – invadingdingo

+0

Я вижу то же самое на детской площадке. Кажется, я что-то помню на игровых площадках. Вы пробовали его в проекте Xcode без игровой площадки? – clearlight

ответ

5

Ваша функция кажется вне класса, что приводит к тому, что метод addChild не может быть найден компилятором.

Вам необходимо включить все соответствующие методы класса между круглыми скобками классов, в том же файле недостаточно.

+0

Я только что обнаружил это, потому что addChild в классе def найден. – clearlight

+0

Поместив его в круглые скобки класса, исправьте ошибку? – vrwim

+0

Я все еще работаю над этим, держись. – invadingdingo

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