SpriteKit:向场景中添加多个 SKSpriteNode
Posted
技术标签:
【中文标题】SpriteKit:向场景中添加多个 SKSpriteNode【英文标题】:SpriteKit: Add Multiple SKSpriteNodes To The Scene 【发布时间】:2015-11-05 20:08:37 【问题描述】:我有一张应该直接在场景中多次添加的图像(例如墙壁)。为此,我想出了一个简单的算法来改变 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 个节点添加到场景中而不会出错?
【问题讨论】:
【参考方案1】:您没有向场景中添加很多节点,而是尝试添加一个节点 40 次,这就是为什么第二次节点有父节点时会出现错误。您需要在“for”中创建节点对象
【讨论】:
确实有道理。它解决了这个问题。谢谢!以上是关于SpriteKit:向场景中添加多个 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章
将 UITextView 添加到 SpriteKit 中的场景
Swift:Spritekit 中的多个场景,从第二个和第一个场景的不同 Sprite 节点类型调用 touchesBegan