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
这确实有道理。它解决了这个问题。谢谢! –