gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:22:14 25 4
gpt4 key购买 nike

我想将节点从屏幕外的位置移开,并将它们沿 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
}

最佳答案

给每个节点一个等待 Action ,其持续时间等于所有先前节点的动画时间。该逻辑与您使用 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 的变量,它跟踪节点在设置动画之前应等待的总时间。

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

关于ios - 尝试在循环中一次移动一个 SKShapeNodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46737583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com