2016-06-07 7 views
1

게임에 대한 소개 장을 만들고 있습니다. 나는 텍스트 변경을 포함하는 시퀀스에서 SKActions를 사용하는 방법을 궁금해했다.SKAction FadeOut, 텍스트 변경, 페이드 인

내가 현재 가지고

monologue.runAction(SKAction.fadeOutWithDuriation(1.5)) 
monologue.text = "text2" 
//*wait for tap* (coded in) 
monologue.runAction(SKAction.fadeInWithDuriation(1.5)) 

답변

0
extension SKNode 
{ 
    func runAction(action: SKAction!, withKey: String!, optionalCompletion: dispatch_block_t?) 
    { 
     if let completion = optionalCompletion 
     { 
      let completionAction = SKAction.runBlock(completion) 
      let compositeAction = SKAction.sequence([ action, completionAction ]) 
      runAction(compositeAction, withKey: withKey) 
     } 
     else 
     { 
      runAction(action, withKey: withKey) 
     } 
    } 
} 

코드 :

var isMonologueReady : Bool = false //global var 

monologue.name = "monologue" 
self.isMonologueReady = false 
let fadeOut = SKAction.fadeOutWithDuration(1.5) 
let wait = SKAction.waitForDuration(1.5) 
let changeText = SKAction.runBlock({monologue.text = "text2"}) 
let changeMytext = SKAction.group([wait,changeText]) 
let actionSequence = SKAction.sequence([fadeOut,changeMytext]) 
monologue.runAction(actionSequence,withKey:"monologueSequence",optionalCompletion: { 
    self.isMonologueReady = true 
}) 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     /* Called when a touch begins */ 

     let touch = touches.first 
     let positionInScene = touch!.locationInNode(self) 

     let touchedNode = self.nodeAtPoint(positionInScene) 
     print (touchedNode.name) 
     if let name = touchedNode.name 
     { 
      if name == "monologue" && self.isMonologueReady 
      { 
       let fadeIn = SKAction.fadeInWithDuration(1.5) 
       monologue.runAction(fadeIn,withKey:"monologueFadeIn") 
      } 
     } 
} 

설명 : 모든 기본 동작을 만들도록 한 후

, 당신이 어떤 조치를 선택할 수 있습니다 r이어야합니다. 순차적으로 함께 누락되었습니다. 이 코드에서 볼 수 있듯이 fadeOut을 기준으로 SKAction 시퀀스와 changeMytext이라는 SKAction.group 시퀀스를 볼 수 있다면 waitchangeText이 그룹 (병렬 모드, 함께 ..)으로 시작됩니다. 마지막으로, 탭을 한 후 actionSequence이 종료되면 (부울이 참) fadeIn을 실행할 수 있습니다.