ios - spritekit SKAction.resizeToHeight 不重复

标签 ios swift sprite-kit

我想增加in touch事件的高度,就像stick hero一样。我正在尝试以下代码

      func changeHeight(){


    let action = SKAction.resizeToHeight(self.leadherNode!.size.height+50, duration: 0.5);
    let seq = SKAction.repeatActionForever(action)
    self.leadherNode?.runAction(seq, withKey: "height")


}

但不幸的是它只是第一次增加了节点的高度并且它永远不会重复。我怎样才能做到这一点?

最佳答案

SKAction 启动后对其参数的更改不会影响操作。您将需要在每一步创建一个具有更新值的新操作。这是一种方法:

定义并初始化高度和最大高度属性

var spriteHeight:CGFloat = 50.0;
let maxHeight:CGFloat = 500.0

didMoveToView 调用它

resizeToHeight()

此函数创建一个 SKAction 将 sprite 的大小调整到特定高度。 Action 完成后,函数更新高度值,然后调用自身。

func resizeToHeight() {
   self.leadherNode?.runAction(
        SKAction.resizeToHeight(self.spriteHeight, duration: 0.5),
        completion:{
            // Run only after the previous action has completed
            self.spriteHeight += 50.0
            if (self.spriteHeight <= self.maxHeight) {
                self.resizeToHeight()
            }
        }
    )
}

关于ios - spritekit SKAction.resizeToHeight 不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27580164/

相关文章:

ios - 是否可以通过其动态单元格高度来更改 Collection View 的高度?如果可能的话我们应该使用哪种委托(delegate)方法?

ios - SKAction.customActionWithDuration 一行上的连续语句必须用 ';'分隔

ios - 将纹理图集拆分为多个纹理图集警告

ios - 只替换字符串中的粗体字,Swift

ios - 切换 View Controller 时连续播放音乐 - Swift 4.2

ios - 当您在 iOS 上连接到 wifi 时,可以使用蜂窝网络进行特定的 http 调用

swift - 如何将一个方法标记为致命的,例如 `fatalError` ?

iOS - 从 didPickMediaItems 获取播放列表

ios - 如何通知在多个设备上运行的 iOS 应用程序?

macos - 单击时在矩阵中获取 SKSpriteNode