ios - SKLabelNode 将消失但仍可点击

标签 ios swift ios8 sprite-kit sklabelnode

我正在使用 SpriteKit 和 Swift 制作一个游戏,运行 Xcode 6。我有一个 SKLabelNode,在这个例子中我们称它为 myLabelNode。当我调用 myLabelNode.removeFromParent() 时,它会按原样从场景中移除节点。节点数减少 1,并且在屏幕上的任何地方都不可见。但是,当我单击 myLabelNode 之前所在的位置时,我的程序仍会调用仅在触摸 myLabelNode 时才会发生的功能。我还尝试将 myLabelNode.removeFromParent()myLabelNode.hidden = true 结合使用,但它仍然是可触摸的,并且即使它不应该调用该函数。我应该如何解决这个问题?我应该使用其他方法吗?这是应该发生的吗?

编辑:

    let lemonadeLabel = SKLabelNode(fontNamed: "Optima-ExtraBlack")

    override func didMoveToView(view: SKView) {

    lemonadeLabel.text = "Lemonade Stand"
    lemonadeLabel.fontSize = 24
    lemonadeLabel.fontColor = SKColor.yellowColor()
    lemonadeLabel.position = CGPoint(x: size.width/2, y: size.height*0.66)
    lemonadeLabel.zPosition = 2.0
    addChild(lemonadeLabel)

    }


    override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {

    let touch = touches.anyObject() as UITouch
    let location = touch.locationInNode(self)

        if lemonadeLabel.containsPoint(location) {

            println("lemonadeLabel pressed")
            lemonadeLabel.removeFromParent()
            /*lemonadeLabel is now be removed,
            however if I click the area where it 
            used to be, "lemonadeLabel pressed"
            will print to the console*/

        }

    }

最佳答案

您正在尝试确定约束点的位置是否被触及。即使您从场景中删除标签,它仍然是内存中的一个对象,即:您可以稍后重新添加它。它仍然具有所有属性,包括位置等。

我会试试这个:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

    for touch: AnyObject in touches {
        if nodeAtPoint(touch.locationInNode(self)) == lemonadeLabel {
            println("lemonadeLabel pressed")
            lemonadeLabel.removeFromParent()
        }
    }
}

您基本上确定 lemonadeLabel 是否是该位置的节点,如果是,您将其删除。因为你是跟场景中添加的节点进行比较,如果没有了,就不会再进行比较了;)

关于ios - SKLabelNode 将消失但仍可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28228029/

相关文章:

ios - 检索每个用户的个人资料图片解析iOS swift

ios - 无法设置 RightBarButtonItems 的位置

objective-c - iOS 8 iPhone 上的 UIPopoverPresentationController

Xcode 6 GM iOS 8 中的 iOS 模拟器界面模糊

ios - 来自 NSString 的 NSJSONSerialization

ios - 带有照片的 iPhone FaceBook 状态

ios - Swift 和录音

objective-c - 在 ios 7.1 和 ios 8.0 中运行时,应用程序在 sleep 模式下崩溃

ios - 如何处理 Swift 中 Firebase 数据库中的 'Assertion Failure' Collectionview 崩溃?

ios - CocoaPods 和 Swift 3.0