问题描述
我正在向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() }
现在doneTrail
是SKAction
,SKAction.sequence([moveAction,doneTrail])
应该可以编译。