如何在SKAction序列中添加一个返回void的函数?

问题描述

我正在向SKSpriteNode对象(一个球)添加一个粒子发射器,以便在其移动时进行跟踪。以下代码将球返回到其原始位置:

let moveAction = SKAction.move(to: CGPoint(x: origNP.x,y: origNP.y),duration: 0.3)
let doneTrail: Void = moveThis.removeAllChildren()
let sequence = SKAction.sequence([moveAction,doneTrail])
moveThis.run(sequence)

我的目标是在球回到其原始位置之前不希望移除发射器。但是上面的代码不起作用,因为我得到了错误:

无法将“无效”类型的值转换为预期的元素类型 'SKAction'

所以我现在要做的是:

let moveAction = SKAction.move(to: CGPoint(x: origNP.x,duration: 0.3)
let sequence = SKAction.sequence([moveAction])
moveThis.run(sequence)
moveThis.removeAllChildren()

但是很明显,在球返回之前,踪迹就消失了。

是否可以在SKAction序列中添加void返回方法?

解决方法

当您想将一段代码转换为SKAction以便将其放入序列(或其他您想对其进行的处理)时,可以使用SKAction.run

let doneTrail = SKAction.run { moveThis.removeAllChildren() }

现在doneTrailSKActionSKAction.sequence([moveAction,doneTrail])应该可以编译。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...