交换两个SKSpriteNode的位置,等待完成

问题描述 投票:0回答:1

我有一个函数,应该用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应该执行相同的操作。

swift sprite-kit
1个回答
0
投票

有几种方法可以执行此操作

© www.soinside.com 2019 - 2024. All rights reserved.