1

I am creating a SpriteKit game and I am having a lot of trouble. The first screen is a menu, when you click the play button, the player is put into the game itself using the code:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    for touch in touches {
        let location:CGPoint = touch.locationInNode(self)
        if self.nodeAtPoint(location).name == "play" {
            playButton.fontColor = colorPressed
            var scene = PlayScene(size: self.size)
            let skView = self.view! as SKView
            skView.ignoresSiblingOrder = true
            skView.showsFPS = false
            skView.showsNodeCount = false
            scene.scaleMode = .AspectFill
            gameStart(scene, skView: skView)
        }
    }
}

func gameStart(scene:SKScene, skView:SKView) {
    let scale = SKAction.scaleTo(0.0, duration: 0.17)
    about.runAction(scale, completion: {
        self.scene?.removeAllChildren()
        self.scene?.removeFromParent()
        skView.presentScene(scene)
    })
}

(PlayScene is the scene for where the player plays the game) This transition works fine. The player is able to play the game fine. Next, when the player loses the game, I go to a game over scene using this code:

func lineHitBadDot(dot: SKSpriteNode) {
    var sceneGG = OverScene(size: self.size)
    let skViewGG = self.view! as SKView
    skViewGG.ignoresSiblingOrder = true
    skViewGG.showsFPS = false
    skViewGG.showsNodeCount = false
    sceneGG.scaleMode = .AspectFill
    let scale = SKAction.scaleTo(0.0, duration: 0.17)
    scoreCounter.runAction(scale, completion: {
        self.scene?.removeAllChildren()
        self.scene?.removeFromParent()
        skViewGG.presentScene(sceneGG)
    })
}

(OverScene is the game over scene) Then, the player has two options, to try again, or return to the menu scene. This uses this code:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    for touch in touches {
        let location:CGPoint = touch.locationInNode(self)
        if self.nodeAtPoint(location).name == "retry" {
            var sceneCookie = PlayScene(size: self.size)
            let skViewCookie = self.view! as SKView
            skViewCookie.ignoresSiblingOrder = true
            skViewCookie.showsFPS = false
            skViewCookie.showsNodeCount = false
            sceneCookie.scaleMode = .AspectFill
            gameStart(sceneCookie, skViewD: skViewCookie)
        }
        else if self.nodeAtPoint(location).name == "menu" {
            var sceneCookieB = GameScene(size: self.size)
            let skViewCookieB = self.view! as SKView
            skViewCookieB.ignoresSiblingOrder = true
            skViewCookieB.showsFPS = false
            skViewCookieB.showsNodeCount = false
            sceneCookieB.scaleMode = .AspectFill
            gameStart(sceneCookieB, skViewD: skViewCookieB)
        }
    }
}

func gameStartE(sceneD:SKScene, skViewD:SKView) {
    let scale = SKAction.moveToY(self.size.height + 300, duration: 0.17)
    homeB.runAction(scale, completion: {
        self.scene?.removeAllChildren()
        self.scene?.removeFromParent()
        skViewD.presentScene(sceneD)
    })
}

The problem arrises when going back to the menu or re-trying the game. When going back to the menu, I see a blank screen, meaning the buttons have animated away, so it is displaying the initial menu scene, instead of deallocating the old one, and creating a new one like I want it to. The same thing happens when re-trying the game, it brings back the old scene instead of deallocating it and creating a new one. I have looked all over the internet and have found no solutions to this problem. Help would be very much appreciated.

Thanks.

Marzukr
  • 95
  • 3
  • 11
  • remove the removeAllChildren and removeFromParent lines, they are unnecessary and who knows what a scene does if you try to remove it from its non-existant parent. Other than that use instruments and analyze build to find leaks. – CodeSmile Jan 09 '15 at 09:51
  • @LearnCocos2D I tried that earlier, it still doesn't work. – Marzukr Jan 09 '15 at 18:58

0 Answers0