菜鸟教程小白 发表于 2022-12-13 02:56:28

ios - 尝试在循环中一次移动一个 SKShapeNodes


                                            <p><p>我想将节点从屏幕外位置移动,并将它们沿 X 轴间隔排列。节点已创建并存储在数组中。我有以下代码可以做到这一点。但是,所有节点同时移动。我希望它们在前一个节点处于新位置时连续移动。我已尝试更改等待操作的持续时间,但它不起作用。</p>

<p>谢谢</p>

<pre><code>    var shapeNodes: = ()
    let w = (size.width + size.height) * 0.05

    for _ in 1...5 {
      let s = SKShapeNode(rectOf: CGSize(width: w, height: w), cornerRadius: w * 0.3)
      s.position = CGPoint(x: frame.midX, y: frame.maxY + 75)
      s.zPosition = 3
      s.fillColor = UIColor.cyan
      shapeNodes.append(s)
      addChild(s)
    }

    var posX: CGFloat = 0.0
    for n in shapeNodes {
      let m = SKAction.moveBy(x: posX, y: -300, duration: 2.0)
      m.timingMode = .easeIn
      let w = SKAction.wait(forDuration: 2.0)
      let seq = SKAction.sequence([ m, w ])
      n.run(seq)
      posX += 125
    }
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>给每个节点一个等待 Action ,其持续时间等于所有先前节点的动画时间。该逻辑与您使用 <code>posX</code> 变量的逻辑非常相似。</p>

<pre><code>var posX: CGFloat = 0.0
var waitDuration: CGFloat = 0
for n in shapeNodes {
    let duration = 2
    let m = SKAction.moveBy(x: posX, y: -300, duration: duration)
    m.timingMode = .easeIn
    let w = SKAction.wait(forDuration: waitDuration)
    let seq = SKAction.sequence()
    n.run(seq)
    posX += 125
    waitDuration += duration
}
</code></pre>

<p>在上面的示例中,我创建了另一个名为 <code>waitDuration</code> 的变量,它跟踪节点在制作动画之前应等待的总时间。</p>

<p>等待 Action 的持续时间设置为 <code>waitDuration</code>,在循环结束时,我将 <code>waitDuration</code> 增加移动 Action 的持续时间。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 尝试在循环中一次移动一个 SKShapeNodes,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46737583/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46737583/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 尝试在循环中一次移动一个 SKShapeNodes