【发布时间】:2021-04-18 04:36:15
【问题描述】:
(以下所有代码均使用 Swift Playgrounds 编写)
首先我添加了 3 个变量并将它们放入一个数组中
var rnaBacteriaCopy1 = SKSpriteNode()
var rnaBacteriaCopy2 = SKSpriteNode()
var rnaVirusCopy4 = SKSpriteNode()
let rnaCopies = [
rnaBacteriaCopy1,rnaVirusCopy4,rnaBacteriaCopy2
]
然后我将 SKTextures 分配给这些变量(每个变量的文本都相似)
rnaBacteriaCopy1 = SKSpriteNode(texture: SKTexture(image:(here I inserted a PNG))
rnaBacteriaCopy1.position = CGPoint(x: 1160, y: 325)
rnaBacteriaCopy1.isHidden = true
addChild(rnaBacteriaCopy1)
最后使用public override function touches began,我让它选择一个随机变量,如果选择的变量是特定变量,则显示标签。
override public func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
var therandomCopy = rnaCopies.randomElement()
rnaCopies.randomElement()?.isHidden = false
if therandomCopy == rnaBacteriaCopy1 {
// Fading Label
var tryAgainLbl = SKLabelNode(text: "Uh oh! Try again.")
tryAgainLbl.fontSize = 70.0
tryAgainLbl.position = CGPoint(x: frame.midX, y: frame.midY)
tryAgainLbl.fontColor = .white
let fadein = SKAction.fadeIn(withDuration: 1)
let remove = SKAction.removeFromParent()
tryAgainLbl.run(SKAction.sequence([fadein,remove]))
addChild(tryAgainLbl)
//Hide this copy
rnaCopies.randomElement()?.isHidden = false
rnaCopies.randomElement()?.isHidden = true
}
最后我隐藏了随机元素,所以你可以看到其他 SKTexture 并点击它。我已经尝试使 if 语句尽可能具体(putting && != to other variable other than this)。但它不起作用,任何想法为什么?
【问题讨论】:
-
标签代码单独运行时有效。因此我会在褪色标签代码中添加一个 print("this works") 。如果它从不打印,那么您就知道问题出在“therandomCopy == rnaBacteriaCopy1”。如果它确实打印,那么可能会增加“tryAgainLbl”zposition,因为它可能隐藏在其他对象后面。我不知道“therandomCopy”是什么,你是在用 == 比较 2 个 spritenodes 吗?
-
对不起!我忘了在原始帖子中添加代码。 therandomCopy 是一个包含数组中随机元素的变量
标签: ios swift sprite-kit swift-playground sklabelnode