我在Swift中尝试使用SpriteKit,但似乎无法创建一系列要在序列中使用的动作。我把它分开试图找出问题所在,但到目前为止还没有运气。
func animateBackground(){
let moveLeft = SKAction.moveByX(100, y: 0, duration: 3)
moveLeft.timingMode = SKActionTimingMode.EaseInEaseOut
let moveRight = SKAction.reversedAction(moveLeft)
let actions = [moveLeft, moveRight] // <--- here there be dragons/trouble
let sequence = SKAction.sequence(actions)
let repeat = SKAction.repeatActionForever(sequence)
}
尝试创建actions-array时,我收到错误&#34;无法转换表达式&#39; Array&#39;输入&#39; ArrayLiteralConvertible&#39; &#34; 所以,我认为我可能需要更明确,并试图将其更改为
var actions: SKAction[] = [moveLeft, moveRight]
这似乎打倒了房子,并没有很好的方式,导致SourceKit terminated虫......
答案 0 :(得分:4)
您正在为moveRight的数组添加一个函数,而不是SKAction本身。请尝试使用此代码:
let moveRight = SKAction.reversedAction(moveLeft)()
答案 1 :(得分:1)
创建moveRight时,您实际上正在生成一个函数。您可以使用&#34;()&#34;来调用该函数。获得实际的SKAction。我在两个SKAction中添加了显式类型,因此很清楚它们可以放在SKAction []中:
let moveLeft:SKAction = SKAction.moveByX(100, y: 0, duration: 3)
moveLeft.timingMode = SKActionTimingMode.EaseInEaseOut
let moveRight:SKAction = moveLeft.reversedAction()
let actions = [moveLeft, moveRight]
let sequence = SKAction.sequence(actions)
let repeat = SKAction.repeatActionForever(sequence)