按顺序运行功能

时间:2017-03-26 17:28:25

标签: sprite-kit

我正在尝试制作一个在3秒延迟后开始的游戏。所以我试图添加一个序列,以便在延迟之后在序列中调用startGame函数。然后,我可以在开头包含延迟时调用该函数,但是当我尝试在第二个函数结束时运行序列时,我一直收到错误。

我有开始游戏功能:

 func startGame(){
    let spawn = SKAction.run(createEnemy)
    let wait = SKAction.wait(forDuration: 2)
    let spawnSequence = SKAction.sequence([wait, spawn])
    let spawnForever = SKAction.repeatForever(spawnSequence)
    self.run(spawnForever)
}

然后我有另一个函数在序列中使用该函数来添加延迟。

 func beginGame(){
    let countdown = SKAction.wait(forDuration: 3)
    let startGame = SKAction.run(self.startGame)
    let startSequence = SKAction.sequence([countdown, startGame])
    **self.beginGame().run(startSequence)**
}

然后我在设置函数的同时调用beginGame()函数。以及最后的设置功能。<​​/ p>

scene.setup()
scene.beginGame()

我得到了一个&#34;元组的价值&#39;()&#39;没有会员&#39;&#39;&#34;

抱歉这个愚蠢的问题,我是swift的初学者。

2 个答案:

答案 0 :(得分:0)

尝试

let spawn = SKAction.run { self.createEnemy() }

let startGame = SKAction.run { self.startGame() }

run block是一个闭包,所以它可能需要括号

试试这个......

func startGame() -> SKAction {
    let spawn = SKAction.run { self.hello() }
    let wait = SKAction.wait(forDuration: 2)
    let spawnSequence = SKAction.sequence([wait, spawn])
    let spawnForever = SKAction.repeatForever(spawnSequence)

    return spawnForever
}

func beginGame() {

    let countdown = SKAction.wait(forDuration: 3)
    let startGame = self.startGame()
    let startSequence = SKAction.sequence([countdown, startGame])
}

self.beginGame()

答案 1 :(得分:0)

SKActions应该在节点上运行。你的代码行 self.beginGame().run(startSequence)似乎试图在函数beginGame()上运行您的序列。因为beginGame()没有定义的返回类型。

根据https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html

  

没有定义返回类型的函数返回一个特殊的type值   虚空。这只是一个空元组,写成()。

正如编译器告诉你的那样,你不能在元组上使用run