繁体   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