Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 尝试在循环中一次移动一个SKShapeNodes_Ios_Sprite Kit - Fatal编程技术网

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

Ios 尝试在循环中一次移动一个SKShapeNodes,ios,sprite-kit,Ios,Sprite Kit,我想将节点从屏幕外的位置移动,并将它们沿X轴以间隔排列。节点已创建并存储在数组中。我有以下代码来完成它。但是,所有节点同时移动。我希望它们在前一个节点处于新位置时连续移动。我已尝试更改等待操作的持续时间,但无效 谢谢 var shapeNodes: [SKShapeNode] = [SKShapeNode]() let w = (size.width + size.height) * 0.05 for _ in 1...5 { let s = SKSha

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

谢谢

    var shapeNodes: [SKShapeNode] = [SKShapeNode]()
    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
    }

为每个节点指定一个等待操作,其持续时间等于所有先前节点的动画时间。该逻辑与
posX
变量的逻辑非常相似

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([w, m])
    n.run(seq)
    posX += 125
    waitDuration += duration
}
在上面的示例中,我创建了另一个名为
waitDuration
的变量,它跟踪节点在设置动画之前应该等待的总时间


等待操作的持续时间设置为
waitDuration
,在循环结束时,我将
waitDuration
增加移动操作的持续时间。

是的,这正是我想要做的。谢谢你的教育。