ios - else if 条件不执行语句

标签 ios swift if-statement sprite-kit

我正在构建一个 gameOver 场景,如果您达到一定数量的积分,您将获得 1、2 或 3 颗星。

我写了一个 if 条件 block ,如下所示:

var starImage = SKSpriteNode()
    if gameScore > 500 {
        starImage = SKSpriteNode(imageNamed: "2_stars")
        print("You achieved 2 Stars")
    } else if gameScore > 1000 {
        starImage = SKSpriteNode(imageNamed: "3_stars")
        print("You achieved 3 Stars")
    } else {
        starImage = SKSpriteNode(imageNamed: "1_star")
        print("You achieved 1 Star")
    }
    starImage.setScale(2)
    starImage.position = CGPoint(x: self.size.width / 2, y: self.size.height * 0.9)
    starImage.zPosition = 2
    self.addChild(starImage)

2_stars 和 1_star 工作正常,但 else if 条件似乎没有执行。

然而奇怪的是,当我用等号 (==) 替换大于号 (>) 时,所有 3 个条件都有效。

我确实尝试过使用 >=,但它与 > 具有相同的效果。

有人知道为什么会这样吗?

最佳答案

您可以使用开关 来确保永远不会发生这种情况:

let starCount: Int
switch gameScore {
    case ...500:       starCount = 1
    case 501 ..< 1000: starCount = 2
    case 1001...:      starCount = 3
}
let sOrBlank = (starCount) == 1 ? "" : "s"
starImage = SKSpriteNode(imageNamed: "\(starCount)_star\(sOrBlank)")
print("You achieved \(starCount) Star\(sOrBlank)")

关于ios - else if 条件不执行语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931706/

相关文章:

ios - captureStillImageAsynchronously 问题

iOS:使用 IBOutlets 的 ARC 强引用或弱引用(用于自定义 UITableviewCell)

ios - UNNotificationAction 按钮未显示,为什么?

ios - 在谷歌地图上难以获得 X 和 Y 中标记的位置?

java - 不要用 if else 比较两个值

iphone - 使用 loadNibNamed 加载 UITableViewCell 时保留计数

ios - 如何获取我的蓝牙设备服务 UUID? swift

ios - else 条件没有执行?

java - 使用监听器的 ANTLR 4 解释器

ios - phonegap-plugin-push 不适用于 iOS 9