簡體   English   中英

在Swift中如何在SKAction上使用Perform方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM