【问题标题】:How to create transition into SKAction?如何创建到 SKAction 的过渡?
【发布时间】:2016-03-05 14:40:23
【问题描述】:

我创建了每 10 秒更改一次背景颜色的函数 我想在改变背景颜色时添加过渡。

游戏场景:

let wait = SKAction.waitForDuration(10)

        let block = SKAction.runBlock({
            [unowned self] in
            self.backgroundColor = UIColor.randomColor()
            })


        let sequence = SKAction.sequence([wait,block])

        runAction(SKAction.repeatActionForever(sequence), withKey: "colorizing")

感谢您的帮助!

【问题讨论】:

  • 您是要从一种颜色过渡到另一种颜色,还是要过渡 (SKTransition) 到另一个场景? :)
  • 我正在尝试从一种颜色过渡到另一种颜色

标签: ios sprite-kit swift2


【解决方案1】:

你可以这样做:

override func didMoveToView(view: SKView) {

   colorize()
}


func colorize(){

     let colorize = SKAction.sequence([

          SKAction.colorizeWithColor(UIColor.randomColor(), colorBlendFactor: 1, duration: 3),

          SKAction.runBlock({[unowned self] in self.colorize()})
      ])

     runAction(colorize, withKey: "colorizing")
}

这是一个递归函数,每次 colorizeWithColor 动作完成时都会调用它自己。这是必需的,因为只需重复此操作:

 SKAction.colorizeWithColor(UIColor.randomColor(), colorBlendFactor: 1, duration: 3)

在一个动作序列中,将始终将背景着色为相同的颜色。这会发生,因为当您创建一次操作时,您无法随时间更改它(例如,您可以更改其速度或暂停它,但您无法更改 duration 或任何其他传递的参数)。相反,我们重新创建与某个键每次相关联的操作。这是来自有关与键关联的操作的文档:

如果使用相同键的操作已在运行,则将其删除 在添加新操作之前。

因此,每次我们运行与“着色”键相关联的新操作时,前一个操作都会被删除,并且始终只有一个与该键相关的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多