我有一个函数,应该用SKAction.move交换两个SKSpriteNodes(Card是一个子类)的位置:
func animateSwapCard(card1 :Card, card2: Card, duration:TimeInterval) {
let inital = card1.position
card1.run(SKAction.move(to: card2.position, duration: duration))
card2.run(SKAction.move(to: inital, duration: duration))
}
两个SKAction应该同时运行,但是animateSwapCard()应该在两个SKAction完成之后返回。我试图同时创建一个动作和一个SKAction.wait来创建一个SKAction.sequence,但是没有用。
[该函数在另一个函数中多次调用:
override func viewDidLoad() {
placeCards()
// get refrences to cardA and cardB
animateSwapCard(card1: cardA, card2: cardB, duration: 1)
// get refrence to cardC
animateSwapCard(card1: cardB, card2: cardC, duration: 1)
// get refrences to card D and cardE
animateSwapCard(card1: cardD, card2: cardE, duration: 1)
}
发生的是,对animateSwapCard()的第二个和第三个调用在第一个之后立即开始。它不等待动画完成再进行下一个操作。所有卡都在完全相同的时间开始移动。
我要存档的是cardA和cardB更改位置。动画完成后,cardB和cardC会更改位置。之后,cardD和cardE应该执行相同的操作。
有几种方法可以执行此操作