2017-12-21 22 views
0

SKAction 시퀀스의 일부로 perform (_ : onTarget :)을 사용하여 함수를 호출하려고합니다.Swift에서 SKAction에 perform 메서드를 사용하는 방법

나는 시도했다 :

let action1 = SKAction.fadeIn(withDuration: TimeInterval(0.2)) 
let action2 = SKAction.wait(forDuration: TimeInterval(0.4)) 
let action3 = SKAction.fadeOut(withDuration: TimeInterval(0.1)) 
let action4 = SKAction.perform(self.blinkLightByOrder, onTarget: UFOSprite._ufoBase) 
let action5 = SKAction.sequence([action1, action2, action3, action4]) 

currentLight.run(action5) 

나는 SKAction.run (블록 :() -> 무효) 사용할 때처럼을 :

let action4 = SKAction.run(self.blinkLightByOrder) 

작동,하지만 난 개체를 보낼 필요 이 메서드는 SKSpriteNode를 요청하기 때문에 :

func blinkLightByOrder(onSprite: SKSpriteNode) 

그러나 계속 오류가 발생하며이 수행 작업을 구현하는 방법을 이해할 수 없습니다. 감사합니다 나는 당신의 문제를 잘 이해하면 난 그냥 이런 기능을 찾기 위해 노력하고 있다고 생각

+1

정확히 무엇이 오류입니까? – halileohalilei

+0

오류 : '()'유형의 값을 예상되는 인수 유형 '선택자'로 변환 할 수 없습니다. – EranKT

+0

let action4 = SKAction.run (self.blinkLightByOrder)이 run (block :)으로 작동하지만이 메서드에 객체 (SKSpriteNode)를 보내야합니다. – EranKT

답변

0

입니다 Orkhan Alikhanov의 코멘트에 게시 됨

우수!

 currentLight.run(
     SKAction.run { 
      SKAction.sequence([ 
       SKAction.fadeIn(withDuration: TimeInterval(0.2)), 
       SKAction.wait(forDuration: TimeInterval(0.4)), 
       SKAction.fadeOut(withDuration: TimeInterval(0.1)), 
      SKAction.run{ self.blinkLightByOrder() }] 
      ) 
    }) 

을 그리고 예상대로 작동합니다

지금 나는이 같은 방법을 변경! 고마워요 :)

0

:

blinkLightByOrder(onSprite: currentLight) 

func blinkLightByOrder(onSprite: SKSpriteNode){ 
    onSprite.run(action4) 
} 

그것은 나를 위해 일한과 대답 단순한 통화 기능