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
시퀀스를 볼 수 있다면 wait
과 changeText
이 그룹 (병렬 모드, 함께 ..)으로 시작됩니다. 마지막으로, 탭을 한 후 actionSequence
이 종료되면 (부울이 참) fadeIn
을 실행할 수 있습니다.