2015-10-23 65 views
2

我有這個功能SKAction重複計數:調用第二功能一旦第一功能已經完成它的使用斯威夫特

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

有人可以幫我解決這個問題嗎?

感謝,

史蒂芬

+0

是什麼類型mgImage? – Moriya

+0

這是一個SKSprite節點。 – Fiducial13

回答

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

感謝您的幫助,非常感謝。雖然我收到了一些錯誤。首先是它說這個動作是無關緊要的,當我刪除它時,--count部分有錯誤,有什麼想法? – Fiducial13

+1

當然。查看帖子以獲得更新的答案 – Moriya

+0

好的,現在可以使用。你的明星,謝謝。 – Fiducial13