如何向 SKAction 序列添加返回 void 的函数?
Posted
技术标签:
【中文标题】如何向 SKAction 序列添加返回 void 的函数?【英文标题】:How to add to an SKAction sequence a function which returns a void? 【发布时间】:2020-09-01 04:57:43 【问题描述】:我正在向 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)
我的目标是在球回到原来的位置之前我不想移除发射器。但是上面的代码不起作用,因为我收到错误:
无法将“Void”类型的值转换为预期的元素类型 'SKAction'
所以我现在的做法是:
let moveAction = SKAction.move(to: CGPoint(x: origNP.x, y: origNP.y), duration: 0.3)
let sequence = SKAction.sequence([moveAction])
moveThis.run(sequence)
moveThis.removeAllChildren()
但很明显,在球还回来之前,轨迹就消失了。
有没有办法向 SKAction 序列添加 void 返回方法?
【问题讨论】:
【参考方案1】:当你想把一段代码变成SKAction
,这样你就可以把它变成一个序列(或者你想用它做的任何其他事情),你可以使用SKAction.run
:
let doneTrail = SKAction.run moveThis.removeAllChildren()
既然doneTrail
是SKAction
,SKAction.sequence([moveAction, doneTrail])
应该可以编译。
【讨论】:
以上是关于如何向 SKAction 序列添加返回 void 的函数?的主要内容,如果未能解决你的问题,请参考以下文章
SKAction如何结合withKey和completion
在随机时间结合 waitForDuration:withRange 和 runBlock: 在 SKAction 序列中生成节点