无法创建SKActions数组

时间:2014-06-07 05:28:45

标签: arrays sprite-kit swift

我在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虫......

2 个答案:

答案 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)