【问题标题】:Pause an SKAction in Spritekit with Swift使用 Swift 在 Spritekit 中暂停 SKAction
【发布时间】:2016-04-08 04:28:12
【问题描述】:

我有以下代码来移动SKSpriteNode

let moveDown = SKAction.moveBy(CGVectorMake(0, -120), duration: 1)
let moveUp = SKAction.moveBy(CGVectorMake(0, +120), duration: 1)
let moveSequence = SKAction.sequence([moveDown, moveUp])
square.runAction(SKAction.repeatActionForever(moveSequence))

这将永远上下移动SKSpriteNode。有没有办法让我暂停这个SKAction?这样SKSpriteNode 会冻结在当前位置,然后当我决定之后,继续它的运动?

我只想暂停这个SKSpriteNode 的移动。我不想暂停SKScene。只是这个1的动向SKSpriteNode

【问题讨论】:

    标签: swift sprite-kit skaction


    【解决方案1】:

    您应该使用键运行操作:

     square.runAction(SKAction.repeatActionForever(moveSequence), withKey:"moving")
    

    然后,使用动作的 speed 属性来暂停它:

    if let action = square.actionForKey("moving") {
    
            action.speed = 0       
    }
    

    或取消暂停:

    action.speed = 1
    

    【讨论】:

    • 感谢旋风!完美运行。如果我有一组 SKSpriteNode,假设其中有 5 个。使用动作的速度属性来阻止它们的最佳方法是什么?我尝试在所有这些上使用“移动”键,但它只会停止其中一个 SKSpriteNodes :)
    • @Questions 首先,命名所有方形节点(例如 square.name = "square"),然后运行enumerateChildNodesWithName 方法以通过其名称访问每个方形,并更改其与键关联的操作“移动”。
    【解决方案2】:

    @Whirlwind 的答案的替代方法是,如果您有一堆需要暂停的动作不属于一个组,而不仅仅是运动,那就是暂停节点本身。所有 SKNode 都有一个与之关联的 paused 属性。

    例如。 square.paused = true

    【讨论】:

      【解决方案3】:

      SCNNode.paused 已重命名为 SNCNode.isPaused。
      您应该能够执行以下操作 暂停动画: square.isPause=true 重启动画: square.isPaused=false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-07
        • 2016-07-13
        • 1970-01-01
        • 2016-11-04
        • 2017-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多