【问题标题】:Calling a second function once the first function has completed it's SKAction repeat count using Swift一旦第一个函数完成后调用第二个函数,它是使用 Swift 的 SKAction 重复计数
【发布时间】:2015-10-23 13:36:46
【问题描述】:

我有这个功能:

func midGroundlevelMovingSlow() {

    let moveLevelImage = SKAction.moveByX(-self.frame.size.width, y: 0, duration: gameSpeed)
    let replaceLevelImage = SKAction.moveByX(self.frame.size.width, y: 0, duration: 0)
    let movingAndReplacingLevelImage = SKAction.repeatAction(SKAction.sequence([moveLevelImage,replaceLevelImage]), count: 5)

    mgImage.runAction(movingAndReplacingLevelImage)
    mgImage2.runAction(movingAndReplacingLevelImage)
}

一旦完成了它的 5 循环,我希望调用这个函数:

func midGroundlevelMovingMedium() {

    let moveLevelImage = SKAction.moveByX(-self.frame.size.width, y: 0, duration: gameSpeed * 2)
    let replaceLevelImage = SKAction.moveByX(self.frame.size.width, y: 0, duration: 0)
    let movingAndReplacingLevelImage = SKAction.repeatAction(SKAction.sequence([moveLevelImage,replaceLevelImage]), count: 5)

    mgImage.runAction(movingAndReplacingLevelImage)
    mgImage2.runAction(movingAndReplacingLevelImage)
}

谁能帮我解决这个问题?

谢谢,

史蒂文

【问题讨论】:

  • mgImage是什么类型的?
  • 这是一个 SKSprite 节点。

标签: xcode swift ios9


【解决方案1】:

SKSpriteNode 有一个带有完成处理程序的运行操作函数。

sprite.runAction(action: SKAction) { () -> Void in
        // call next function
    }

您可以在该完成处理程序中运行您的下一个方法。

如果您想等待两个函数完成,您可以使用计数器并在调用下一个方法之前检查两者是否都已完成。

类似

func midGroundlevelMovingSlow(completion: (()->Void)?) {

    let moveLevelImage = SKAction.moveByX(-self.frame.size.width, y: 0, duration: gameSpeed)
    let replaceLevelImage = SKAction.moveByX(self.frame.size.width, y: 0, duration: 0)
    let movingAndReplacingLevelImage = SKAction.repeatAction(SKAction.sequence([moveLevelImage,replaceLevelImage]), count: 5)

    var callCount = 2

    mgImage.runAction(movingAndReplacingLevelImage){ () -> Void in
        if --callCount == 0 {
            completion?()
        }
    }

    mgImage2.runAction(movingAndReplacingLevelImage){ () -> Void in
        if --callCount == 0 {
            completion?()
        }
    }
}

【讨论】:

  • 感谢您的帮助,非常感谢。我得到了几个错误。首先是它说的是动作:是无关的,当我删除它时, --count 部分有错误,有什么想法吗?
  • 我有一个与此相关的查询,我想知道您是否可以看一下。我想你将能够提供帮助。 stackoverflow.com/questions/33319558/…
猜你喜欢
  • 1970-01-01
  • 2021-05-30
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 2018-08-07
相关资源
最近更新 更多