Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SKLabel在';指定给特定元素的_Ios_Swift_Sprite Kit_Swift Playground_Sklabelnode - Fatal编程技术网

Ios SKLabel在';指定给特定元素的

Ios SKLabel在';指定给特定元素的,ios,swift,sprite-kit,swift-playground,sklabelnode,Ios,Swift,Sprite Kit,Swift Playground,Sklabelnode,(以下所有代码均在Swift操场中编写) 首先,我添加了3个变量,并将它们放入一个数组中 var rnaBacteriaCopy1 = SKSpriteNode() var rnaBacteriaCopy2 = SKSpriteNode() var rnaVirusCopy4 = SKSpriteNode() let rnaCopies = [ rnaBacteriaCopy1,rnaVirusCopy4,rnaBacteriaCopy2 ] 然后我将SKTextures指定给这些变量(每

(以下所有代码均在Swift操场中编写)

首先,我添加了3个变量,并将它们放入一个数组中

var rnaBacteriaCopy1 = SKSpriteNode()
var rnaBacteriaCopy2 = SKSpriteNode()
var rnaVirusCopy4 = SKSpriteNode()

let rnaCopies = [
rnaBacteriaCopy1,rnaVirusCopy4,rnaBacteriaCopy2
] 
然后我将SKTextures指定给这些变量(每个变量的文本都相似)

最后,使用
public override函数
我让它选择一个随机变量,如果选择的变量是一个特定的变量,则显示标签

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 
        }

override public func touchsbegind(touch:Set,带有事件:UIEvent?){
var therandomCopy=rnaCopies.randomElement()
rnaCopies.randomElement()?.isHidden=false
如果随机副本==rnaBacteriaCopy1{
//褪色标签
var tryAgainLbl=SKLabelNode(文本:“哦!再试一次。”)
tryAgainLbl.fontSize=70.0
tryAgainLbl.position=CGPoint(x:frame.midX,y:frame.midY)
tryAgainLbl.fontColor=.white
让fadein=SKAction.fadein(持续时间:1)
让remove=SKAction.removeFromParent()
tryAgainLbl.run(SKAction.sequence([fadein,remove]))
addChild(tryAgainLbl)
//隐藏此副本
rnaCopies.randomElement()?.isHidden=false
rnaCopies.randomElement()?.isHidden=true
}

最后,我隐藏了随机元素,这样你就可以看到其他SKTexture并点击它。我已经试着使if语句尽可能具体化
(将&&!=放入除此之外的其他变量)
。但是它不起作用,你知道为什么吗?

给出节点名称,这样你就可以引用它们了

您可以在设置位置和isHidden等的位置设置名称

rnaBacteriaCopy1.name = "bacteria1"
需要注意的是,您可以为多个节点指定相同的名称,因此如果所有细菌节点都使用“细菌”名称是有意义的,那么您可以这样做

您还可以为病毒提供一个名称:

rnaVirusCopy4.name = "virus"
现在,在您的应用程序中,开始替换此代码:

if therandomCopy == rnaBacteriaCopy1 {
为此:

if therandomCopy.name == "bacteria1" {

这意味着如果randomCopy节点的名称为“bacteria1”,则继续使用if中的标签代码。

标签代码在单独运行时起作用。因此,我会在褪色标签代码中添加一个打印(“此工作”)。如果它从未打印,则您知道它是“therandomCopy==RNAbcteriacopy1”这就是问题所在。如果它确实打印,那么可能会增加“tryAgainLbl”Z的位置,因为它可能隐藏在其他对象后面。我不知道什么是“therandomCopy”是的,你是在用==?比较两个spritenodes吗?啊,对不起!我忘了在原始帖子中添加代码。therandomCopy是一个包含数组中随机元素的变量。该解决方案对我来说不太有效(不确定为什么)。我将尝试将随机复制与节点的纹理进行比较。也许这样行吗?无论如何,感谢您的帮助@JohnL:)
if therandomCopy.name == "bacteria1" {