代码之家  ›  专栏  ›  技术社区  ›  Robin

按动作顺序反转每个动作,而不反转所有动作的顺序

  •  1
  • Robin  · 技术社区  · 4 年前

    SKAction 顺序,然后分别反转每个操作,而不反转整个顺序。

    我最初是通过 reverse() 中的方法 SKAction公司 但这不是我想要的。 From the documentation :

    此操作是可逆的;它创建了一个新的顺序操作,该操作反转了操作的顺序。相反顺序中的每个动作本身都是相反的。例如,如果一个动作序列是{1,2,3},则相反的序列是{3R,2R,1R}。

    我需要{1R,2R,3R}作为新操作。例如,如果我有:

    let rotate = SKAction.rotate(byAngle: -CGFloat.pi / 2, duration: 0.5)
    let scale = SKAction.scale(by: 2, duration: 0.5)
    let action = SKAction.sequence([rotate, scale])
    

    我想把一些函数应用到 action

    let rotate = SKAction.rotate(byAngle: CGFloat.pi / 2, duration: 0.5)
    let scale = SKAction.scale(by: 0.5, duration: 0.5)
    let action = SKAction.sequence([rotate, scale])
    

    有没有一种方法可以实现这一点,而不编程这个翻转动作分开?为了做到这一点,我认为一种可能是将序列分解成单独的动作,反转它们,并从这些动作中构建一个新的动作,但我似乎找不到一种方法来打破 rotation 再次回到两个单独的旋转。

    1 回复  |  直到 4 年前
        1
  •  1
  •   JohnL    4 年前

    您可以通过创建另一个序列来执行此操作,但操作是相反的,因此:

    let actionReversed = SKAction.sequence([rotate.reversed(), scale.reversed()])
    

      yourspritenode!.run(action) { [self] in
        yourspritenode!.run(actionReversed)
      }