gpt4 book ai didi

Swift (iOS8) SpriteKit 在移动到下一个循环之前等待动画在运行循环中完成?

转载 作者:搜寻专家 更新时间:2023-11-01 05:42:55 25 4
gpt4 key购买 nike

在 swift 中的循环中,如何确保动画在下一次迭代之前先完成,从而发生新的动画调用?

抱歉,我可能会在这里用类似于 another 的问题覆盖旧地。使用 Objective-C,而不是 swift。我只是想提出自己的查询,因为我几乎是从 Swift 开始的,但在这个问题上没有找到很多明确的帮助。

下面是一些简单的代码来帮助证明我的问题。 moveAlong 函数只需要一个 CGPoints 数组,我已经硬编码如下:

let point1 = CGPointMake(100, 100)
let point2 = CGPointMake(100, 400)
let point3 = CGPointMake(400, 400)
array.append(point1)
array.append(point2)
array.append(point3)
moveAlong(array) //calls the function passing in our points


func moveAlong(thesePoints:[CGPoint]) {

var length = thesePoints.count //capture the length of array

//for every point in the array
for i in 0..<length {

//plug point from the array into our move action here
let move = SKAction.moveTo(thesePoints[i], duration: 1)
let spinAction = SKAction.rotateByAngle(CGFloat(2*M_PI), duration:1)


//both above actions are sequenced together
let sequence = SKAction.sequence([move,spinAction])

//run the sequence on sprite
sprite.runAction(sequence)

}
}

这段代码的当前行为是一种看起来很奇怪的所有三个 Action 的混合体,将 Sprite 移动到 point3 的最终位置,然后是所有 3 个旋转 Action (不太确定 Sprite 如何kit 正在同时处理同一个 Sprite 上的 3 个动画调用?)。不完全是我所追求的行为..

我正在寻找一种方法,使每个动画调用在移动到下一个之前全部执行。所以,希望这将使 Sprite 移动到每个点,执行旋转,然后继续下一个动画。显然,此示例的重要部分是必须在循环中发生。

我显然有很多东西要在这里学习,所以任何帮助将不胜感激。

提前致谢,马特

最佳答案

提示:不要直接运行您的sequence 操作,而是将它存储在一个数组中。 for 循环结束后,您的数组应该包含 3 个 Action 。您现在可以创建另一个序列操作来运行这 3 个操作。

关于Swift (iOS8) SpriteKit 在移动到下一个循环之前等待动画在运行循环中完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26055604/

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