gpt4 book ai didi

swift - 使用 willSet 设置新分数

转载 作者:行者123 更新时间:2023-11-30 13:09:00 26 4
gpt4 key购买 nike

所以我正在学习 swift2 并且正在使用 friend 的项目。他有一个游戏计数器,但我想在用户死亡时创建一个标签。我尝试将分数标签设置为 (score),但代码将分数设置为 0,并且没有机会 score 进行计数。我不知道如何更新分数。这是代码

var score:Int = 0 {
willSet {
let scoreBand = childNodeWithName(StickHeroGameSceneChildName.ScoreName.rawValue) as? SKLabelNode
scoreBand?.text = "\(newValue)"
scoreBand?.runAction(SKAction.sequence([SKAction.scaleTo(1.5, duration: 0.1), SKAction.scaleTo(1, duration: 0.1)]))

if (newValue == 1) {
let tip = childNodeWithName(StickHeroGameSceneChildName.TipName.rawValue) as? SKLabelNode
tip?.runAction(SKAction.fadeAlphaTo(0, duration: 0.4))
}
}
}

let scoreLbl = SKLabelNode(fontNamed: "AmericanTypewriter")
scoreLbl.position = CGPointMake(0, 200)

scoreLbl.text = "\(newValue)" // , this throws error, tried score but it = 0

node.addChild(scoreLbl)

最佳答案

使用didSet,以便您的代码实际上看到score的更新值。因此:

class Foo {
var score:Int = 0 {
didSet {
let scoreBand = childNodeWithName(
StickHeroGameSceneChildName.ScoreName.rawValue) as? SKLabelNode
scoreBand?.text = "\(score)"
scoreBand?.runAction(
SKAction.sequence([SKAction.scaleTo(1.5, duration: 0.1),
SKAction.scaleTo(1 , duration: 0.1)]))

if (score == 1) {
let tip = childNodeWithName(
StickHeroGameSceneChildName.TipName.rawValue) as? SKLabelNode
tip?.runAction(SKAction.fadeAlphaTo(0, duration: 0.4))
}
}
}
}

但是,请注意,scoreBandtip 是仅在 didSet 上下文中绑定(bind)的变量,因此无法访问它们。因此,只有当返回的 SKLabelNode 是可变的(假设是可变的)时,您对“子节点”的更改才可见。

关于swift - 使用 willSet 设置新分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38958519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com