2017-12-21 15 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) 
} 

それが答えを私のために働いたと

関連する問題