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() }]
)
})
而且效果和预期的一样!
非常感谢:)
我尝试使用 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() }]
)
})
而且效果和预期的一样! 非常感谢:)