首页 > 解决方案 > 从spriteKit Swift4中的父节点删除子节点时出错

问题描述

我做了一个视差背景,在 GameScene.sks 我添加了一个空节点,将两个精灵添加到一个空节点。我有一个重置按钮,当我单击它时,我需要删除背景并将其添加到其位置(重新启动),但是当我添加 scrollBg.removeAllChildren 重新启动功能时出现错误,如何正确添加和删除子项现场 ?

  import SpriteKit
  import GameplayKit



class GameScene: SKScene {

     var player: SKSpriteNode!
     var scrollBg: SKNode!
     var spawnTimer: CFTimeInterval = 0
     let fixedDelta: CFTimeInterval = 1.0/60.0 /* 60 FPS */
     let scrollSpeed: CGFloat = 700
     var sinceTouch: CFTimeInterval = 0


       func resetGameScene() {

        scrollBG.removeAllChildren()
        player.removeAllChildren()
        player.position = CGPoint(x: 590 , y: 690)

        pauseButton()

      }

      override func didMove(to view: SKView) {

        physicsWorld.contactDelegate = self
        player = childNode(withName: "player") as? SKSpriteNode
        scrollBg = childNode(withName: "scrollBG")!

        resetGameScene()
      }


       func scrollWorld() {

         scrollBg.position.y -= scrollSpeed * CGFloat(fixedDelta)

           for ground in scrollBg.children as! [SKSpriteNode] {

         let groundPosition = scrollBg.convert(ground.position, to: 
                                                             self)

            if groundPosition.y <= -ground.size.width  {
               let newPosition = CGPoint(x: groundPosition.x, y: 
                   (self.size.width ) + ground.size.width * 2)

              ground.position = self.convert(newPosition, to: 
                                                          scrollBg)
               }
            }
         }



       override func update(_ currentTime: TimeInterval) {

           sinceTouch+=fixedDelta
           spawnTimer+=fixedDelta
           scrollWorld()
           }







       }

标签: xcodeswift3sprite-kit

解决方案


推荐阅读