[英]How to use perform method on SKAction in Swift
我嘗試使用perform(_:onTarget :)作為SKAction序列的一部分來調用函數。
我試過了:
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(block:()-> Void)時:
let action4 = SKAction.run(self.blinkLightByOrder)
它有效,但是我需要發送對象,因為此方法要求SKSpriteNode:
func blinkLightByOrder(onSprite: SKSpriteNode)
但我不斷收到錯誤消息,無法理解如何執行此執行動作。 謝謝
如果我正確理解了您的問題,那么我認為您只是在嘗試找到這樣的函數:
blinkLightByOrder(onSprite: currentLight)
func blinkLightByOrder(onSprite: SKSpriteNode){
onSprite.run(action4)
}
它對我有用,只是一個簡單的調用函數
Orkhan Alikhanov在評論中發布的答案
SKAction.run { self.blinkLightByOrder(onSprite: mySprite) }
很棒!
現在,我更改了這樣的方法:
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() }]
)
})
並按預期工作! 非常感謝 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.