SpriteKit:将多个SKSpriteNodes添加到场景中

问题描述:

我有一个图像应该多次添加到场景中直接排队(例如,墙壁)。为此我想出了一个简单的算法来改变x和y坐标。SpriteKit:将多个SKSpriteNodes添加到场景中

func addBackground(){ 
    bg = SKSpriteNode(imageNamed: "background") 
    let fieldsX = 5 
    let fieldsY = 8 
    var xPos = CGFloat() 
    var yPos = CGFloat() 
    let fieldsWidth = screenWidth/CGFloat(fieldsX) 
    let sumField = fieldsX * fieldsY 

    bg.size = CGSize(width: fieldsWidth, height: fieldsWidth) 
    for(var i = 0; i < sumField; i++){ 
     bg.position = CGPoint(x: xPos, y: yPos) 
     self.addChild(bg) 
     xPos = xPos + fieldsWidth 
     if(i % fieldsX == 0){ 
      yPos = yPos + fieldsWidth 
      xPos = 0 
     } 
    } 
} 

因此,让我解释一下我的代码。首先,我用图像创建一个SKSpriteNode。之后,我需要填补现场的一些变数。所以我希望图像在x轴上出现5次,在y轴上出现8次。为确保它们的尺寸相同,它们是方形的。每次在for循环中,x坐标都会高出屏幕的1/5。每第5个循环x坐标得到重置,y坐标得到1/8的屏幕更高。总共40个节点应该被创建并添加到场景中。当我运行该程序时,由于未捕获的异常,在AppDelegate中出现错误。它还说:试图添加一个已经有父母的SKNode。有没有办法将40个节点添加到场景中而没有错误?

您不会为场景添加多个节点,您尝试添加一个节点40次,这就是为什么第二次它节点有父节点并且出现错误。您需要在'for'中创建节点obgects

+0

这确实有道理。它解决了这个问题。谢谢! –