xcode - 在第一个函数完成后调用第二个函数,它是使用 Swift 的 SKAction 重复计数

标签 xcode swift ios9

我有这个功能:

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)
}

谁能帮我解决这个问题?

谢谢,

史蒂文

最佳答案

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?()
        }
    }
}

关于xcode - 在第一个函数完成后调用第二个函数,它是使用 Swift 的 SKAction 重复计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303732/

相关文章:

ios - 如何使用约束解决此自动布局 "puzzle"?

Swift:将符合 FloatingPoint 的值转换为 Double

swift - 如何在 SKSpriteNode 上使用 Swift 中的完成处理程序进行连续函数调用?

ios - Apple ID 无法登录。错误 : Couldn’t communicate with a helper application. Xcode 7.1

ios - 捕获 GPU 帧时的 EXC_BAD_ACCESS

IOS Swift 表格 View : Is there a way to move first cell one row down

ios - UutableView 选定的单元格到其他 View

swift - iOS10 swift 2.2 在 Instagram 上分享 openURL& canOpenURL 更改

swift - 如何在 UIAlertController 中为 UIImage 着色

iphone - 使用Core Graphics绘制正方形或包含png?