[ios]以编程方式分发沿着 SkScene 宽度 4 SKSpriteNodes

标签: sprite-kit ios Swift
发布时间: 2017/4/3 23:16:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我知道场景坐标是 (0,0) 在中心如何我可以发布 4 SKNodes 沿宽度使用 for 循环

for index 1...4 {

 let node = SKNode() 
 node.postion = evenly distribute along the scene width. who can i do it?
}

解决方法 1:

您可以使用场景的数量减 1 个节点划分的宽度。这会被乘以指数减去 1,然后添加到你的场景的最小 x 值。

let widthRange = scene.frame.maxX - scene.frame.minX

for index 1...4 { 
    let node = SKNode() 
    node.postion = scene.frame.minX + widthRange/(4-1) * (index-1)
}

这应沿宽度的一幕,从每一条边相等距离对方的每个节点。

如果你的指数为循环不从 1 开始,代码将需要修改为这样的事情︰

let widthRange = scene.frame.maxX - scene.frame.minX

var counter = 0
for index 352...356 { 
    let node = SKNode() 
    node.postion = scene.frame.minX + widthRange/(4-1) * counter
    counter+=1
}

如果你不确定要使用哪个版本,使用第二个版本,因为它是那么依赖的格式 for 循环 (只要您重置 counter 为 0 之前每次你使用此)。

如果您需要任何澄清究竟什么做什么,随便问。

编辑

这应该澄清的代码确实。

let widthRange = scene.frame.maxX - scene.frame.minX用于获取大小的现场,然后将其设置为一个变量,以后用。使这个变量是种可选你可以只使用场景的大小,但是我把它放这种方式,所以它是不那么凌乱。

var counter = 0只是使得计数器的变量,在 for 循环,用于放置节点。请确保将其设置为 0 之前,每次你运行循环。 counter+=1 使用然后晚些时候,所以每个节点乘以一个增加的值,创建不同的 x 位置。(我会讲到以后)

node.postion = scene.frame.minX + widthRange/(4-1) * counter是复杂的线。首先,我使用 scene.frame.minX 开始放置,从最低的宽度 / x-位置。 widthRange/(4-1) 是有点难以理解。它采用场景宽度 (从早些时候),然后除以一个小于节点的数量。最好的方法,要理解这一点,是要削减一个矩形 (仅在一个方向) 所以它有 2 的削减,通过它 (节点 2),和 2 边缘 (其他 2 个节点),你将需要 3 个部分。(矩形将切成 3)。这获取每个节点之间的距离。模式的 #ofNodes-1 为每个节点数的跟随。* counter是使节点的 x 位置实际上改变的部分。因为每次循环的经历,计数器就增加 1 (从 0 开始) 量从之前的"节"( widthRange/(4-1) ) 将增加 1。

赞助商