我有一张图像,应该直接在线(例如一堵墙)中多次添加到场景中。为此,我想出了一个简单的算法来更改x和y坐标。
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”内部创建对象节点
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句