ios - 生成具有时间间隔的随机颜色

标签 ios swift skspritenode

我正在使用代表球的 SKspritenode。我正在忙着做的是我希望球在每个时间间隔后改变颜色。

override func update(_ currentTime: TimeInterval) {

    ball.color = UIcolor.random()

    }

我会说代码可以很好地改变颜色。然而,问题是每一帧的颜色变化比我计划的颜色变化要快得多,比如每 2 秒一次。

下面列出了我解决这个问题的方法

var relative = 300

var Time = 0 {

    didSet {

        if Time == relative {

            ball.color = UIColor.random()
        }
    }
}

override func update(_ currentTime: TimeInterval) {

    PT.run(SKAction.moveTo(x: ball.position.x, duration: 0.5))

    Time += 1

    if Time == relative {

        Time = 0
    }
}

因此此代码旨在每 Time == 300 更改一次颜色。而值 Time 每帧更新一次。那么时间值会在达到 300 时重置为 0

这样我就可以在几秒后而不是每一帧后改变颜色。

这种设计可能看起来很便宜,而且是一种未经经验的编码和设置函数运行的方式。这就是为什么我要求任何有经验的程序员帮助我建立一种更好的方法来设计这种逻辑。我对函数及其工作方式非常陌生,所以如果你们中的任何人都可以向我学习如何编写可运行或自包含函数的代码,而不依赖于“Swift 内置函数”,如“Override function Update”

最佳答案

你可以使用一个简单的模数 if currentTime % 300 == 0 { ball.color = UIColor.random() }

关于ios - 生成具有时间间隔的随机颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45170997/

相关文章:

iphone - 如何手动读取JSON

ios - 为可调整大小的 UIView 设置最小和最大宽度和高度

android - 用于为不同智能手机操作系统开发应用程序的通用代码库

ios - Swift SKSpriteNode 类未将触摸注册到 GameScene

ios - 无法实现 SKSprite 类。没有错误信息,只是不显示

ios - 在 iOS 上为文件 ://URLs causes "Frame load interrupted" error 使用自定义 NSURLProtocol

arrays - Swift - setValuesForKeys(dictionary) 错误 - 此类与键的键值编码不兼容

swift - 执行身份验证后如何重试请求?

ios - 当 Swift 中的 WiFi 可用时,恢复线程时遇到问题

macos - 获取 SKSpriteNode 纹理在该位置的 alpha 值