You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpriteKit游戏中运行SKAction后调用函数的实现咨询

在SpriteKit中运行SKAction后调用自定义函数的方法

嘿,这个需求其实很容易实现,有几种简洁的方式可以满足你的要求,我来给你详细说明:

方法一:直接传递函数名

因为你的actionDone()函数的签名(无参数、无返回值)正好和run(_:completion:)方法里completion参数要求的() -> Void类型完全匹配,所以你可以直接把函数名作为参数传进去:

let node = SKSpriteNode()
// 先定义一个示例动作,比如移动
let moveAction = SKAction.moveBy(x: 150, y: 0, duration: 1.5)

// 运行动作,完成后直接调用actionDone
node.run(moveAction, completion: actionDone)

// 你的自定义完成函数
func actionDone() {
    print("SKAction执行完成啦!")
    // 这里写你需要的后续逻辑
}

方法二:使用尾随闭包(更灵活)

如果需要在动作完成时除了调用actionDone(),还要额外执行一些临时逻辑,或者你更习惯闭包的写法,可以用尾随闭包的形式,在闭包里调用你的自定义函数:

node.run(moveAction) {
    self.actionDone() // 类中使用时需要加self(Swift 5+部分场景可省略,但加上更稳妥)
    // 这里可以添加其他完成后要执行的代码,比如节点状态更新、音效播放等
}

两种方法都能达到你要的效果,选哪种取决于你的场景和编码习惯~

内容的提问来源于stack exchange,提问作者Louis Eppler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:45:03