swift - 如何创建一个运行两个函数且永不重叠的循环?

标签 swift function sprite-kit skaction

我是编程新手,一直在学习 swift 和 spritekit 在线类(class),试图从头开始创建我的第一个可以运行的游戏。

目前,我在尝试创建一系列独立运行的函数时遇到问题,等待一次只有一个函数运行,并无限循环。

第一个函数:

func shootTwentyArrows() {

    var oneArrow = SKAction.runBlock{

        self.shootArrow()

    }

    var waitBetweenArrows = SKAction.waitForDuration(arrowSpeed)
    var fireAnArrow = SKAction.sequence([oneArrow, waitBetweenArrows])
    self.runAction(SKAction.repeatAction(fireAnArrow, count: 20))
}

第二个函数:

func shootSpiral1() {

    var leftArrow = SKAction.runBlock{

        self.arrowFromLeft()

    }

    var rightArrow = SKAction.runBlock{

        self.arrowFromRight()

    }

    var waitBetweenArrows = SKAction.waitForDuration(arrowSpeed)
    var sequence = SKAction.sequence([leftArrow, waitBetweenArrows, rightArrow, waitBetweenArrows])

    var spiral1 = SKAction.repeatAction(sequence, count: 5)

    self.runAction(spiral1)

为了澄清,我正在尝试运行类似的东西: 射击二十箭() 完成后,shootSpiral1(),完成后重复。

预先感谢您的任何回复。

最佳答案

我想最正确的方法是稍微重构代码:

func shootTwentyArrows() -> SKAction {

let oneArrow = SKAction.runBlock{

    self.shootArrow()

}

let waitBetweenArrows = SKAction.waitForDuration(arrowSpeed)
let fireAnArrow = SKAction.sequence([oneArrow, waitBetweenArrows])
return SKAction.repeatAction(fireAnArrow, count: 20)
}

func shootSpiral1() -> SKAction {

let leftArrow = SKAction.runBlock{

    self.arrowFromLeft()

}

let rightArrow = SKAction.runBlock{

    self.arrowFromRight()

}

let waitBetweenArrows = SKAction.waitForDuration(arrowSpeed)
let sequence = SKAction.sequence([leftArrow, waitBetweenArrows, rightArrow, waitBetweenArrows])

let spiral1 = SKAction.repeatAction(sequence, count: 5)
return spiral1
}

然后在代码中的某个地方你可以做类似的事情:

let spiralAction = shootSpiral1()
let oneArrowAction = shootTwentyArrows()
let sequence = SKAction.sequence([spiralAction, oneArrowAction])
let infiniteSequence = SKAction.repeatActionForever(sequence)
self.runAction(infiniteSequence)

我故意将函数名称保留为相同,这样你就明白了。

P.S. 将变量声明为 let 是一种常见的做法,只有当您稍后需要修改它时才将其声明为 var

关于swift - 如何创建一个运行两个函数且永不重叠的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31442907/

相关文章:

json - 如何使用 swift 4 解码这个 JSON

javascript - 如何从另一个矩形中驱逐一个矩形 - Javascript

C编程: A pyramid with asterisks

ios - Spritekit 场景内容被放大

ios - 使用 SpriteKit 制作 Logo 动画

swift - 使用SKScene制作通用应用程序

ios - swift 中 UITableView 的多个委托(delegate)

swift - NSDocument选项卡窗口恢复

ios - 在 Swift 4 中,如何创建明亮/ Shiny /发光的 View ?

javascript - 当行数未知时,使用 javascript 更改行的类